Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2011, 17h43   #1
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Par défaut Déplacer un message après envoi

Bonsoir,
J'ai trouvé ce code qui permet de déplacer le message vers un dossier précis aprés etre envoyé .
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'---------------------------------------------------------------------------------------
' Procédure : Application_ItemSend
' Auteur    : Dolphy35 - http://dolphy35.developpez.com/
' Date      : 07/05/2008
' Détail    : Déplace le mail envoyé vers le dossier "dolphy_essais"
'---------------------------------------------------------------------------------------
'
'Déclarations des objets
    Dim objNSpace As namespace
    Dim fldDestination As MAPIFolder
    'Test si l'élément envoyé est un E-mail
    If Not Item.Class = olMail Then Exit Sub
    'Instance des objets
    Set objNSpace = Application.GetNamespace("MAPI")
    Set fldDestination = objNSpace.Folders("Dossiers personnels").Folders("Boîte de réception").Folders("dolphy_essais")
    Set Item.SaveSentMessageFolder = fldDestination
 
    'Vide des instances
    Set objNSpace = Nothing
    Set fldDestination = Nothing
 
End Sub
Peut on le modifier afin de déplacer le message uniquement pour certain destinataires ?
le but est de trier certain message suivant le destinataire apres son envoi.
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 08h27   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 594
Points : 1 594
Envoyer un message via MSN à carden752
Bonjour,

Oui c'est possible, il suffit de trier le destinataire du message, je n'ai pas tester mais quelque chose du style
Code :
If Not Item.To = "nom_destinataire" Then Exit Sub
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 18h32   #3
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
oui ça marche en rajoutant cette ligne dans le code
mais pour filtrer plusieurs destinataires ?
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 00h21   #4
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 594
Points : 1 594
Envoyer un message via MSN à carden752
Bonjour,

Les destinataires sont dans une catégorie, une liste de diffusion de ton carnet d'adresses, c'est une liste figée?
Si tel est le cas, tu fais la même commande en bouclant sur la liste.
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 11h23   #5
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Mes destinataires sont dans une catégorie "Magasin".
j'ai essayé
If Not Item.to.Categories = "Magasin"
mais ça doit pas etre ça
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 15h59   #6
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 594
Points : 1 594
Envoyer un message via MSN à carden752
Bonjour,

Pour accéder aux catégories des contacts
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub SetAffiliationForContacts()
    Dim ns As NameSpace
    Dim foldContact As Object 'Object -> Outlook 2003 - Folder -> Outlook 2007 et 2010    Dim itemContact As ContactItem
    Dim colItems As Outlook.Items
    Dim myProperty As Outlook.UserProperty
       
    Set ns = Application.GetNamespace("MAPI")
    Set foldContact = ns.GetDefaultFolder(olFolderContacts)
    Set colItems = foldContact.Items.Restrict("[MessageClass]='IPM.Contact'")
    
    For Each itemContact In colItems
If itemcontact.Email1Address=Item.To then 'Comparaison des adresses
        If itemcontact.categories="Magasin" Then   
'Transfert         
        end if
end if
Next
End Sub
Je pense sans avoir testé que quelque chose de ce style peut marcher.
Attention si le contact a plusieurs adresses :
Code :
1
2
3
itemcontact.Email1Address peut être 
itemcontact.Email2Address
itemcontact.Email3Address
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 21h36   #7
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Bon je sèche
car le premier code s’exécute automatiquement puisque il est dans ThisOutlookSession
mais le second code Non.
en plus j'ai une erreur sur
Code :
If itemcontact.Email1Address=Item.To then 'Comparaison des adresses
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 18h04   #8
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
j'ai tenté de modifier le code pour traiter plusieurs destinataires.
j'ai séparé en deux le code.
le premier analyse le mail et les destinataires. si le destinataire est vrai je lui demande d’exécuter le programme Sub classermail()
le tout est placé dans ThisOutlookSession.
Tout se passe bien dans le traitement sauf à la ligne
Code :
Set item.SaveSentMessageFolder = fldDestination
où j'ai une erreur.

Pouvez vous m'aider ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
'
'Déclarations des objets
    Dim objNSpace As NameSpace
    Dim fldDestination As MAPIFolder
    'Test si l'élément envoyé est un E-mail
    If Not item.Class = olMail Then Exit Sub
    'Test le nom du destinataire
    If item.To = "Adresse1" Then classermail Else MsgBox "Pas de classement"
    If item.To = "Adresse2" Then classermail Else MsgBox "Pas de classement"
End Sub
 
Sub classermail()
MsgBox "ClasserMail"
'Déclarations des objets
    Dim objNSpace As NameSpace
    Dim fldDestination As MAPIFolder
    'Instance des objets
    Set objNSpace = Application.GetNamespace("MAPI")
    Set fldDestination = objNSpace.Folders("Boîte aux lettres").Folders("Éléments envoyés").Folders("Magasin")
    Set item.SaveSentMessageFolder = fldDestination
    'Vide des instances
    Set objNSpace = Nothing
    Set fldDestination = Nothing
End Sub
Ha oui j’oubliai, je suis nul en VBA
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 18h06   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Pas de message d'erreur ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 21h04   #10
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Oui à la ligne
Code :
Set item.SaveSentMessageFolder = fldDestination
Erreur d’exécution '424':
Objet requis
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 21h52   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
ben il dit quoi ce message !
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 21h56   #12
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Erreur d’exécution '424':
Objet requis
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 22h04   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
a oui ... ton objet item n'est déclaré nulle-part...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 22h22   #14
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
j'ai rajouté
mantenant j'ai
Erreur d’exécution '91':
variable objet ou bloc With non définie
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 22h26   #15
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par didier.aucun Voir le message
j'ai rajouté
mantenant j'ai
Erreur d’exécution '91':
variable objet ou bloc With non définie
suffit pas de le déclarer .. il faut aussi lui affecter quelque chose...


essai de modifier la déclaration de ta fonction

Code :
Sub classermail( item as object)
et son appel :


Code :
...Then classermail  Item ...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 22h48   #16
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
merci.
voici mon code modifié et ça marche
bon je suis sur qu'il y avait plus simple ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
'
    'Test si l'élément envoyé est un E-mail
    If Not item.Class = olMail Then Exit Sub
    'Test le nom du destinataire
    If item.To = "Adresse1" Then Classermail item
    If item.To = "Adresse2" Then Classermail item
End Sub
 
Sub Classermail(item As Object)
MsgBox "ClasserMail"
'Déclarations des objets
    Dim objNSpace As NameSpace
    Dim fldDestination As MAPIFolder
    'Instance des objets
    Set objNSpace = Application.GetNamespace("MAPI")
    'Dossiers personnels\Éléments envoyés\Magasin
    Set fldDestination = objNSpace.Folders("Dossiers personnels").Folders("Éléments envoyés").Folders("Magasin")
    Set item.SaveSentMessageFolder = fldDestination
    'Vide des instances
    Set objNSpace = Nothing
    Set fldDestination = Nothing
End Sub
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h09.


 
 
 
 
Partenaires

Hébergement Web