Répétition de macro

degap05

XLDnaute Impliqué
Bonjour,

J'ai besoin de votre aide. Même s'il s'agit d'une macro dans Outlook. Celle-ci déplace actuellement un message à l'ouverture d'Outlook, puis s'arrête. J'aimerais qu'elle déplace plusieurs messages répondant au critère de déplacement. Il s'agit donc de la faire se répéter plusieurs fois. Mon essai ci-dessous de placer For To, ne fonctionne pas (mal placé?). Je vous la soumets:

Sub DéplacerLeMessage()
On Error Resume Next
Dim i As Integer
Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder
Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem
Set objNS = Application.GetNamespace("MAPI")
Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
Set objFolder = objInbox.Folders("Temp")
For i = 1 To 4
For Each objItem In Application.ActiveExplorer.Selection
If objFolder.DefaultItemType = olMailItem Then
If objItem.Subject = "Commande" Then
objItem.Move objFolder
End If
End If
Next
Next i
Set objItem = Nothing
Set objFolder = Nothing
Set objInbox = Nothing
Set objNS = Nothing
End Sub

Merci. A+
 
C

Compte Supprimé 979

Guest
Re : Répétition de macro

Salut Degap05,

Tu as un forum spécialement créé pour ce genre de demande :confused:
A quoi ça sert que David XLD ce décarcasse :D

Ta répétition se fait normalement dans ta boucle For ... Each ?
Code:
For Each objItem In Application.ActiveExplorer.Selection
  If objFolder.DefaultItemType = olMailItem Then
    If objItem.Subject = "Commande" Then
      objItem.Move objFolder
    End If 
  End If
Next

Par contre le ".selection" pose peut-être soucis

a+
 
C

Compte Supprimé 979

Guest
Re : Répétition de macro

Re,

Le forum dédié à Outlook est beaucoup moins réactif
D'accord avec toi, mais ce n'est tout de même pas une raison :cool:

Le forum des autres applications est plus spécifique et donc parfois plus difficile à répondre.

Je vais demander à Pascal de déplacer ce fil ;)

Sinon, peut-être un truc comme ça
Code:
Sub DéplacerLeMessage()
  On Error Resume Next
  Dim i As Integer
  Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder
  Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem
  Set objNS = Application.GetNamespace("MAPI")
  Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
  Set objFolder = objInbox.Folders("Temp")
  objFolder.Display
  For Each objItem In Application.ActiveExplorer
    If objFolder.DefaultItemType = olMailItem Then
      If objItem.Subject = "Commande" Then
        objItem.Move objFolder
      End If
    End If
  Next
  Set objItem = Nothing
  Set objFolder = Nothing
  Set objInbox = Nothing
  Set objNS = Nothing
End Sub

a+
 

degap05

XLDnaute Impliqué
Re : Répétition de macro

BrunoM45,

Je suis arrivé à traiter tous les messages d'un coup et non pas seulement le message sélectionné, par:

Sub DéplacerLeMessage()
On Error Resume Next
Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder
Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem
Dim intX As Integer
Set objNS = Application.GetNamespace("MAPI")
Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
Set objFolder = objInbox.Folders("Temp")
For intX = objInbox.Items.Count To 1 Step -1
Set objItem = objInbox.Items(intX)
If objFolder.DefaultItemType = olMailItem Then
If objItem.Subject = "Commande" Then
objItem.Move objFolder
End If
End If
Next
Set objItem = Nothing
Set objFolder = Nothing
Set objInbox = Nothing
Set objNS = Nothing
End Sub

Ceci fonctionne parfaitement sur une boîte "privée".

Je vais proposer une discussion pour faire agir la macro sur une boîte générique partagée.

Merci.
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
538

Statistiques des forums

Discussions
314 628
Messages
2 111 336
Membres
111 104
dernier inscrit
JEMADA