[VBA Outlook] Règle de mails

Règle de mails [VBA Outlook] - VB/VBA/VBS - Programmation

Marsh Posté le 16-04-2012 à 15:16:01    

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 ?

Reply

Marsh Posté le 16-04-2012 à 15:16:01   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed