XL 2016 Outlook - Déplacer les mails - Variable à corriger

Lolote83

XLDnaute Barbatruc
Bonjour à toutes et à tous.

Sur un fichier de suivi de mails, je souhaite automatiquement déplacer les mails dans des dossiers spécifiques.
La procédure fonctionne mais en fonction du nombre de sous-dossiers je me retrouve confronté à un problème.

- Dans l'exemple 1, j'ai 3 sous dossiers et la commande VBA est la suivante
Set MyDestFolderFinal = MyNameSpace.GetDefaultFolder(6).Folders("MISSION").Folders("Reçus").Folders("Nom de la personne")

- Dans l'exemple 2, j'ai un seul sous dossier
Set MyDestFolderFinal = MyNameSpace.GetDefaultFolder(6).Folders("DEKRA")

- Dans l'exemple 3, j'ai 4 sous dossiers
Set MyDestFolderFinal = MyNameSpace.GetDefaultFolder(6).Folders("PHOTOCOPIEURS").Folders("XEROX").Folders("Consommable").Folders("2022")

La valeur 6 correspond au dossier "Boîte de réception"

Question :
Comment définir automatiquement ma variable MyDestFolderFinal en fonction du nombre de sous dossiers ? (je connais le nombre de sous dossier, mais comment rédiger cette variable)

Voir fichier joint. Aucune macro n'est associée actuellement, car ma question porte uniquement sur la rédaction de ma variable MyDestFolderFinal

En vous remerciant par avance
Bien cordialement
@+ Lolote83
 

Pièces jointes

  • Pour Forum - DeplaceMail.xlsx
    67.8 KB · Affichages: 3
Solution
Bonjour,
Si vous connaissez la structure des dossiers outlook, le code ci-dessous devait suffire ( exemple à adapter) :
VB:
Sub MyFolders()
 Dim OlInbox As Outlook.Folder
 Dim MyDestFolderFinal As Outlook.Folder
 
 Set Ol = CreateObject("Outlook.Application")
     Set OlInbox = Ol.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    
     Set MyDestFolderFinal = OFolder(OlInbox, Array("Dekra"))
     MsgBox MyDestFolderFinal.FolderPath
    
     Set MyDestFolderFinal = OFolder(OlInbox, Array("test", "soustest"))
     MsgBox MyDestFolderFinal.FolderPath

 Set Ol = Nothing
 
End Sub
Function OFolder(Ib, SF) As Outlook.Folder
    Set OFolder = Ib
    For Each F In SF
       Set OFolder = OFolder.Folders(F)
    Next
End Function

fanch55

XLDnaute Barbatruc
Bonjour,
Si vous connaissez la structure des dossiers outlook, le code ci-dessous devait suffire ( exemple à adapter) :
VB:
Sub MyFolders()
 Dim OlInbox As Outlook.Folder
 Dim MyDestFolderFinal As Outlook.Folder
 
 Set Ol = CreateObject("Outlook.Application")
     Set OlInbox = Ol.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    
     Set MyDestFolderFinal = OFolder(OlInbox, Array("Dekra"))
     MsgBox MyDestFolderFinal.FolderPath
    
     Set MyDestFolderFinal = OFolder(OlInbox, Array("test", "soustest"))
     MsgBox MyDestFolderFinal.FolderPath

 Set Ol = Nothing
 
End Sub
Function OFolder(Ib, SF) As Outlook.Folder
    Set OFolder = Ib
    For Each F In SF
       Set OFolder = OFolder.Folders(F)
    Next
End Function
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Les exemples donnés fonctionnent correctement.
Cependant, comment a partir de ma commande

Selon l'exemple 1
- "MISSION/Reçus/Nom de la personne", je peux arriver à Array("MISSION","Reçus","Nom de la personne")

Selon l'exemple 2
- "DEKRA", je peux arriver à Array("DEKRA")

Selon l'exemple 3
- "PHOTOCOPIEURS/XEROX/Consommable/2022" , je peux arriver à Array("PHOTOCOPIEURS","XEROX","Consommable","2022")

En fait, je fait passer en paramètre la chaine de caractère décrite comme dans les exemple 1,2 et 3
Avec un split(chaine de caractère,"/") je peux dissocier chaque élément, mais comment alors construire le Array ?
Merci de m'éclairer
@+ Lolote83
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 109
Membres
112 662
dernier inscrit
lou75