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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel] macro outlook ne traite jamais dernier mail sauf si un seul

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Excel] macro outlook ne traite jamais dernier mail sauf si un seul

n°2302238
wago
Posté le 20-06-2017 à 12:17:27  profilanswer
 

Bonjour à tous,
 
clairement je galère, je suis en train de créer une macro sous excel qui va récupérer des fichiers xml reçus en PJ de mail.
lorsque j’exécute cette macro tout va bien:

Code :
  1. Sub test()
  2. Application.Calculation = xlManual
  3. Application.ScreenUpdating = False
  4. Dim myOlApp As Outlook.Application
  5. Dim myNameSpace As Object
  6. Dim myInbox As Object
  7. Dim DossierSource As Object
  8. Dim DossierTraite As Object
  9. Dim myItem As Object, myAttachments As Object
  10. Dim RepSauv As String
  11. Dim ExtFich As String
  12. Set myOlApp = CreateObject("Outlook.Application" )
  13. Set myNameSpace = myOlApp.GetNamespace("MAPI" )
  14. Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
  15. Set DossierSource = myInbox.Folders("XML" )
  16. Set DossierTraite = myInbox.Folders("XML" ).Folders("Traités" )
  17. RepSauv = "C:\XML\test\"
  18. For Each myItem In DossierSource.Items
  19.     Set myAttachments = myItem.Attachments
  20.         If myAttachments.Count > 0 Then
  21.             'for all attachments do...
  22.             For i = 1 To myAttachments.Count
  23.             ExtFich = Mid(myAttachments(i), InStrRev(myAttachments(i), "." ) + 1)
  24.                 If ExtFich = "xml" Then
  25.                    'save them to destination
  26.                     myAttachments(i).SaveAsFile RepSauv & myAttachments(i).DisplayName
  27.                 End If
  28.             Next i
  29.         End If
  30.     'Set myItem = myItem.Move(DossierTraite) (Ignorée car me pose Pb)
  31. Next
  32. Application.Calculation = xlAutomatic
  33. End Sub


 
il récupère bien que les XML des mails dans le répertoire défini.
 
Par contre dès que j'active cette ligne dans mon code pour déplacer le mail traité dans le sous répertoire "traités":

Code :
  1. Set myItem = myItem.Move(DossierTraite)


A chaque fois il me zappe un mail, il ne le traite pas du tout, comme s'il n'existait pas, et quand je relance à nouveau la macro là il le traite.
Je ne comprends pas pourquoi?!? :pt1cable: Et c'est systématiquement le dernier mail de la liste qu'il ne traite pas.
 
Help me  :hello:


Message édité par wago le 20-06-2017 à 12:21:56
mood
Publicité
Posté le 20-06-2017 à 12:17:27  profilanswer
 

n°2302312
Marc L
Posté le 21-06-2017 à 10:38:41  profilanswer
 

 
            Bonjour,
 
            pourquoi Set myItem = ?!    Quel intérêt ?
 

n°2302332
wago
Posté le 21-06-2017 à 19:52:23  profilanswer
 

J'ai pris ce bout de code sur un forum. J'ai essayé sans mais ça ne fonctionne pas, ça me renvoie une erreur.

n°2302398
Marc L
Posté le 23-06-2017 à 14:46:35  profilanswer
 

 
            C'est bien là le problème : Copier / Coller n'est pas coder …
 
            Comme la variable est celle utilisée par la boucle, il ne faut surtout pas la modifier au sein de cette boucle !
            Es-tu sûr au moins que le code copié fonctionne déjà là où tu l'as pris ?!   Car tel quel, j'en doute fort …
 

n°2302881
wago
Posté le 04-07-2017 à 22:10:31  profilanswer
 

Marc L a écrit :

 
            C'est bien là le problème : Copier / Coller n'est pas coder …
 
            Comme la variable est celle utilisée par la boucle, il ne faut surtout pas la modifier au sein de cette boucle !
            Es-tu sûr au moins que le code copié fonctionne déjà là où tu l'as pris ?!   Car tel quel, j'en doute fort …
 


 
Je croyais être sur un forum d'entre aide pas de leçon... Bref j'ai trouvé comment faire, en rejouant tout bêtement en boucle le déplacement tant qu'il y a des mails dans le répertoire concerné.
Si ça intéresse qqn:
 

Code :
  1. Sub DEPLACEMENT()
  2. 'Macro de déplacement des emails traités vers le repertoire "Traités" de la bal outlook
  3.     Application.ScreenUpdating = False
  4. 'Déclaration des variables
  5.     Dim MyOlapp As Object
  6.     Dim myNameSpace As Object
  7.     Dim myInbox As Object
  8.     Dim myDestFolder As Object
  9.     Dim myItems As Outlook.Items
  10.     Dim myItem As Object
  11. On Error GoTo err
  12. 'Deplace chaque mail vers le repertoire traité de la boite mail
  13. deplace:
  14.     Set MyOlapp = CreateObject("Outlook.Application" )
  15.     Set myNameSpace = MyOlapp.GetNamespace("MAPI" )
  16.     Set myInbox = myNameSpace.Folders("Ma boite de fonction" ).Folders("Boîte de réception" ).Folders("XML" )
  17.     Set myItems = myInbox.Items
  18.     Set myDestFolder = myNameSpace.Folders("Ma boite de fonction" ).Folders("Boîte de réception" ).Folders("XML" ).Folders("Traités" )
  19.     For Each myItem In myItems
  20.     myItem.Move myDestFolder
  21.     Next
  22. 'Teste la présence de mail dans le repertoire xml, s'il reste des mail rejoue le bloc du dessus
  23. testmail:
  24.     Dim EmailCount As Integer
  25.     EmailCount = myInbox.Items.Count
  26.         If EmailCount > 0 Then
  27.             GoTo deplace
  28.         End If
  29.     Exit Sub
  30. err:
  31. MsgBox ("Une erreur est survenue." & Chr(10) & "Il se peut que:" & Chr(10) & " -Outlook ne soit pas executé" & Chr(10) & " -Le repertoire XML n'existe pas" )
  32. End Sub


 
Merci quand meme  :hello:


Message édité par wago le 04-07-2017 à 22:11:14

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

  [Excel] macro outlook ne traite jamais dernier mail sauf si un seul

 

Sujets relatifs
Macro de suppression pour wordenvois mail par macro sous excel
mise en forme automatique des titres d'un fichier word par un macro vMacro capture d'écran
Export Excel=> TXT avec suppression doublonExtraction de données de logs dans un répertoire vers Excel
Enregistrer les données contenues dans un formulaire excel (textbox) v 
Plus de sujets relatifs à : [Excel] macro outlook ne traite jamais dernier mail sauf si un seul


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