Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
A quoi ça sert que David XLD ce décarcasse

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

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…