Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1209 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Outlook] Règle de mails

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Outlook] Règle de mails

n°2136897
Felkor
Para bellum
Posté le 16-04-2012 à 15:16:01  profilanswer
 

Hello,
 
J'aurai besoin d'un coup de main sur du VBA (je ne suis pas développeur, même si j'arrive généralement à me dépatouiller pour faire ce dont j'ai besoin).
 
Objectifs de mon script : création automatique de folder et des règles de messages associés sur Outlook. En gros, dans mon boulot je fais du ticketing, et je créé à chaque fois un dossier dont le nom corresponds au numéro de l'incident. Tous mes échanges de mails avec les clients / constructeurs portent ensuite la référence de l'incident dans l'objet, et je voudrais rediriger automatiquement les mails dans les dossiers correspondants.
 
Ce que j'arrive à faire :
- Saisir le numéro de l'incident
- Créer le folder correspondant dans Outlook
- Créer le dossier correspondant sur le disque (pour l'enregistrement des fichiers joints, etc)
- Créer une règle pour rediriger le courier entrant matchant le numéro de l'incident dans le folder spécifié
 
Ce que je n'arrive pas à faire :
- Créer une règle pour rediriger le courrier sortant matchant le numéro de l'incident dans le folder spécifié.
 

Sub Ouverture()
     
    Dim myCases As String
    Dim myDirectory As String
    Dim fullPathCreation As String
    'Spécifier ici le répertoire dans lequel vous voulez créer les tickets (ce répertoire doit déjà exister)
    myCases = "Tickets"
    'Spécifier le répertoire local correspondant au ticket
    myDirectory = "D:\TICKETS\Test\"
         
         
    Dim myolApp As Outlook.Application
    Dim myNamespace As Outlook.NameSpace
     
    'Création du nouveau dossier dans le répertoire indiqué précedemment
    Set myolApp = CreateObject("Outlook.Application" )
    Set myNamespace = myolApp.GetNamespace("MAPI" )
    'Demande à l'utilisateur le numéro de ticket
    FolderName = InputBox("Indiquer le numéro du ticket :" )
    Set objStrCtc = myNamespace.GetDefaultFolder(olFolderInbox).Folders(myCases).Folders.Add(FolderName, olFolderInbox)
    objStrCtc.ShowAsOutlookAB = True
    'Création du répertoire local
    fullPathCreation = myDirectory + FolderName
    If Len(Dir(fullPathCreation, vbDirectory)) = 0 Then
        MkDir fullPathCreation
    End If
     
    Dim colRules As Outlook.Rules
    Dim oRule As Outlook.Rule
    Dim colRuleActions As Outlook.RuleActions
    Dim oMoveRuleAction As Outlook.MoveOrCopyRuleAction
    Dim oExceptSubject As Outlook.TextRuleCondition
    Dim oInbox As Outlook.Folder
    Dim oMoveTarget As Outlook.Folder
 
    'Selectionne le folder cible de la règle
    Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox)
    Set oMoveTarget = oInbox.Folders(myCases).Folders(FolderName)
     
    'Récupère les règles existantes
    Set colRules = Application.Session.DefaultStore.GetRules()
     
    'Créer les règles IN et OUT
    Set oRuleIn = colRules.Create(FolderName + "_IN", olRuleReceive)
    Set oRuleOut = colRules.Create(FolderName + "_OUT", olRuleSend)
 
    'Définition la règle IN
    Set oExceptSubject = oRuleIn.Conditions.Subject
    With oExceptSubject
        .Enabled = True
        .Text = Array(FolderName)
    End With
     
        Set oMoveRuleAction = oRuleIn.Actions.MoveToFolder
    With oMoveRuleAction
        .Folder = oMoveTarget
        .Enabled = True
    End With
       
    'Définition la règle OUT
    Set oExceptSubject = oRuleOut.Conditions.Subject
    With oExceptSubject
        .Enabled = True
        .Text = Array(FolderName)
    End With
 
    Set oMoveRuleAction = oRuleOut.Actions.MoveToFolder
    With oMoveRuleAction
        .Folder = oMoveTarget
        .Enabled = True
    End With
     
    'Update the server and display progress dialog
    colRules.Save
     
End Sub


 
La partie qui déconne :
 

  'Définition la règle OUT
    Set oExceptSubject = oRuleOut.Conditions.Subject
    With oExceptSubject
        .Enabled = True
        .Text = Array(FolderName)
    End With
 
    Set oMoveRuleAction = oRuleOut.Actions.MoveToFolder
    With oMoveRuleAction
        .Folder = oMoveTarget
        .Enabled = True
    End With


 
Le message d'erreur qui m'est ressorti l'est sur le dernier .Enabled = True => impossible d'activer la règle.
En effet lors de mes tests, lorsque je regarde dans la liste des règles après avoir lancé le script, les règles sont bien créées, mais la règle OUT n'est pas activée.
 
Le message d'erreur :
 

Citation :

Opération non valide. Impossible d'aciver cette action de règle, car la règle est en lecture seule, n'est pas valide pour le type de règle, ou cette action entre en conflit avec une autre action de la règle.


 
Cependant, je ne comprend pas. La règle n'est pas en lecture seule, et est valide pour ce type de règle ? Et je ne vois pas pourquoi elle entrerait en conflit avec une autre action de la règle.
Surtout que l'autre partie (partie IN donc) fonctionne bien. Les types olRuleRecieve et olRuleSend sont les mêmes normalement...
 
Bref, je bloque, et mes recherches sur le net et les différents forums ne m'ont pas aidé :(
 
Quelqu'un aurait une idée ?

mood
Publicité
Posté le 16-04-2012 à 15:16:01  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Outlook] Règle de mails

 

Sujets relatifs
Macro VBA Actualisation automatique Formule mensuelleExceution script VBA Excel 2010
Lire .txt de 370 MB avec VBAVBA : Transférer une matrice dans un tableur Excel
Formulaire en VBA dans feuille Excel[VBA] Callback / Timeout
[Réglé] Supprimer virgule et X caracteres apresFête d'ami - VBA dans Excel 2007
besoin d'une petite ligne VBA pour AccessUn graphique Excel avec des aspects différents ! SVP !!! (VBA)
Plus de sujets relatifs à : [VBA Outlook] Règle de mails


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR