IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Ajouter pièce jointe automatiquement (Macro) [OL-2010]


Sujet :

VBA Outlook

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Ajouter pièce jointe automatiquement (Macro)
    Bonjour,

    Avec outlook 2010, une application tierce crée et envoie des mails dans la boite d'envoi d'Outlook 2010 (Mise en attente d'envoi).

    Est il possible avec un bouton macro, de joindre toujours la même pièce jointe à ces mails créés par l'appli tierce, en faisant une routine analysant le contenu de l'objet des mails dans la boite d'envoi.(Exemple de l'obet: Mail créé par Appli...)

    Si le texte de l'objet 'Mail créé par Appli' est trouvé alors:
    - Ouvrir le mail (Sans le modifier)
    - Insérer la pièce jointe

    J'espère être assez clair. Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    A mettre dans ThisOutlookSession

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
    'by oliv modifiée le 12/2/2013
     
        Dim prompt As String
        Dim taille, pieces
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
     
        ' on verifie que c'est un mail
        If Not item.Class = olMail Then GoTo fin
     
         '###########verification SI PUBLIPOSTAGE #################################
        If UCase(item.subject) Like "*PUBLIPOSTAGE*" Then
            On Error Resume Next
            'Pour ajouter la même PJ à tous
            item.Attachments.Add Source:= _
             "d:\temp\DOC2.PDF"
            'Pour ajouter un document personnalisé d'après le destinataire _
             du mail décommenter
            ' ici le nom du document est "destinataire@domaine.fr.doc"
            'docperso = "d:\temp\monmailing\" & item.To & ".doc"
            'item.Attachments.Add Source:=docperso
     
            'On sauvegarde le mail
            item.Save
            'on va directement à la fin pour éviter les questions sur l'envoi
            GoTo fin
        End If
     
        '#######FIN #######
    fin:
     
        Set item = Nothing
     
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Macro piece jointe
    Bonjour et un grand merci pour votre solution.

    Désolé mais cela ne fonctionne pas, lorsque je fais envoyer/recevoir la pièce jointe ne s'insére pas, rien ne se passe... Pouvez vous m'aider à trouver l'erreur que je fais?

    Dans ThisOutlookSession, j'ai copié ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
     
     
        Dim prompt As String
        Dim taille, pieces
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
     
        ' on verifie que c'est un mail
        If Not item.Class = olMail Then GoTo fin
     
        If UCase(item.Subject) Like "*Facture N° F*" Then
            On Error Resume Next
            'Pour ajouter la même PJ à tous
            item.Attachments.Add Source:= _
             "c:\cgv\cgv.PDF"
     
     'Pour ajouter un document personnalisé d'après le destinataire _
             du mail décommenter
            ' ici le nom du document est "destinataire@domaine.fr.doc"
            'docperso = "d:\temp\monmailing\" & item.To & ".doc"
            'item.Attachments.Add Source:=docperso
     
            'On sauvegarde le mail
            item.Save
            'on va directement à la fin pour éviter les questions sur l'envoi
            GoTo fin
        End If
     
        '#######FIN #######
    fin:
     
        Set item = Nothing
     
    End Sub

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    La fonction Ucase retourne une chaine en majuscule donc la comparaison suivante est toujours fausse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If UCase(item.Subject) Like "*Facture N° F*" Then
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If UCase(item.Subject) Like "*FACTURE N° F*" Then

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Suite..
    Merci Christophe pour l'aide, mais malgré la modif proposée, le pb est identique. Le fichier joint ne s'insére pas, pourtant la macro se lance bien lorsque je fais 'Envoyer'...

  6. #6
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Enlève le message permettant de passer sur les erreurs
    Et dis nous quelle est la ligne qui provoque une erreur, s'il y en a une.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Erreur 446
    Cet objet ne gère pas les arguments nommés:

    item.Attachments.Add Source:= _
    "c:\cgv\cgv.PDF"

  8. #8
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Il faut passer par un objet intermédiaire de type Mailitem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim monmail as MailItem
    set monmail=item
    monmail.attachments.add source:= _
    "c:\cgv\cgv.PDF"

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,

    Voici qui doit fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
     
     
        Dim prompt As String
        Dim taille, pieces
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
     
        ' on verifie que c'est un mail
        If Not item.Class = olMail Then GoTo fin
     
        If UCase(item.Subject) Like "*FACTURE N° F*" Then
            'On Error Resume Next
            'Pour ajouter la même PJ à tous
            item.Attachments.Add "c:\cgv\cgv.PDF"
     
     'Pour ajouter un document personnalisé d'après le destinataire _
             du mail décommenter
            ' ici le nom du document est "destinataire@domaine.fr.doc"
            'docperso = "d:\temp\monmailing\" & item.To & ".doc"
            'item.Attachments.Add Source:=docperso
     
            'On sauvegarde le mail
            item.Save
            'on va directement à la fin pour éviter les questions sur l'envoi
            GoTo fin
        End If
     
        '#######FIN #######
    fin:
     
        Set item = Nothing
     
    End Sub

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par carden752 Voir le message
    Bonjour,

    Il faut passer par un objet intermédiaire de type Mailitem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim monmail as MailItem
    set monmail=item
    monmail.attachments.add source:= _
    "c:\cgv\cgv.PDF"
    c'est effectivement parce que item As Object et pas MailItem

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Super le code ci-dessous fonctionne... Merci à tous.

    Une derniere question, comment utiliser 'Facture N° F' en respectant strictement la casse ('F' majuscules, 'acture' en minuscules, etc..).
    La casse de cet objet est créé automatiquement par l'application tierce...
    Merci à vous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
     Dim prompt As String
        Dim taille, pieces
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
     
        ' on verifie que c'est un mail
        If Not item.Class = olMail Then GoTo fin
     
        If UCase(item.Subject) Like "*FACTURE N° F*" Then
            'On Error Resume Next
            'Pour ajouter la même PJ à tous
            item.Attachments.Add "c:\cgv\cgv.PDF"
     
     'Pour ajouter un document personnalisé d'après le destinataire _
             du mail décommenter
            ' ici le nom du document est "destinataire@domaine.fr.doc"
            'docperso = "d:\temp\monmailing\" & item.To & ".doc"
            'item.Attachments.Add Source:=docperso
     
            'On sauvegarde le mail
            item.Save
            'on va directement à la fin pour éviter les questions sur l'envoi
            GoTo fin
        End If
     
        '#######FIN #######
    fin:
     
        Set item = Nothing
     
    End Sub

  12. #12
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Il suffit de ne pas utiliser la fonction Ucase mais comparer directement item.subject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If item.Subject Like "*Facture N° F*" Then

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Merci
    Merci encore à tous pour la solution et le temps passé...

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Outlook 2013
    Bonjour,
    je n'arrive pas à faire fonctionner ce code dans outlook 2013.Les macros sont bien activés. est ce un problème de compatibilité ?

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    salut,
    où as tu placé ce code ?

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    salut,
    où as tu placé ce code ?
    Salut.
    dans thisoutlooksession

    Nom : Microsoft Visual Basic pour Applications - VbaProject.OTM.jpg
Affichages : 4261
Taille : 65,6 Ko

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Peux tu publier le code que tu utilises ?

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Bonjour,
    Peux tu publier le code que tu utilises ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
     
    Dim prompt As String
        Dim taille, pieces
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
     
        ' on verifie que c'est un mail
        If Not Item.Class = olMail Then GoTo fin
     
        If UCase(Item.Subject) Like "*TARIF 42*" Then
          On Error Resume Next
            'Pour ajouter la même PJ à tous
            Item.Attachments.Add "c:\TEST.PDF"
     
     'Pour ajouter un document personnalisé d'après le destinataire _
             du mail décommenter
            ' ici le nom du document est "destinataire@domaine.fr.doc"
            'docperso = "d:\temp\monmailing\" & item.To & ".doc"
            'item.Attachments.Add Source:=docperso
     
            'On sauvegarde le mail
            Item.Save
            'on va directement à la fin pour éviter les questions sur l'envoi
            GoTo fin
        End If
     
        '#######FIN #######
    fin:
     
        Set Item = Nothing
     
    End Sub

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    ta procédure doit s'appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
    c'est une procédure événementielle !

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    ta procédure doit s'appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
    c'est une procédure événementielle !

    Évidemment quel boulet je fais, merci beaucoup.cela est fonctionnel maintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro pour sauvegarde pdf et envoie en pièce jointe automatique
    Par toast-nc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/03/2015, 12h20
  2. [XL-2007] Ajouter pièce jointe au mail
    Par malababar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2010, 09h32
  3. [OL-2007] Extraction des pièces jointes automatique dans un dossier externe
    Par Athly dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 14/04/2009, 17h01
  4. Ajout pièce jointe
    Par notepares dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 08/10/2008, 10h43
  5. Sauvegarde des pièces-Joints automatique
    Par benhamidaa dans le forum Outlook
    Réponses: 1
    Dernier message: 31/12/2007, 08h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo