word/outlook 2013 publipostage sous un autre nom [ resolue]

oceanex

XLDnaute Nouveau
Bonjour à tous

Notre secrétaire fait régulièrement du publipostage pour communiqué avec nos clients. (fournir des chiffres de vente, etc.). tout va bien, mais est ce qu'il est possible qu'au lieu que son nom apparaisse, ce soit celui du représentant du client ?
je m'explique
si j'ai trois représentant et que chacun ont 10 clients, lorsque notre secrétaire l'envoie a leur 10 clients il faudrait que le nom de Clark, Bruce ou Olivier apparaisse dans le champs envoyé de et non le nom de notre secrétaire.

c'est possible ?

j'ai fouillé sur google, mais il n'a pas été mon amie sur ce coup.
Je vous remercie beaucoup pour votre temps.

Gege
 
Dernière édition:

oceanex

XLDnaute Nouveau
Re : word/outlook 2013 publipostage sous un autre nom

Merci de votre réponse, désolé du délais.

pour le fichier word c'est une feuille tout a fait normal de publipostage (nom du client, etc)
pour le fichier excel, c'est juste quelques colonnes avec le nom du nom du client, le nom du représentant, le $, l'adresse email du client.

Je vous ai joint des exemples, se ne sont pas notre fichier de travail, mais il lui ressemble.

on fait des exportation via notre logiciel AS400 et on envoie le tout sur excel.

quand notre secrétaire va faire l'envoie, au lieu d'être marqué son nom, on aimerait mieux que se soit le nom du représentant. (exemple au lieu d'être marqué Félicité se serait Oliver).

Merci beaucoup ! :)
 

Pièces jointes

  • exemplepublipostage.xlsx
    8.6 KB · Affichages: 162
  • test publipostage.docx
    12.3 KB · Affichages: 152

Yaloo

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Bonsoir gege,

Donc, c'est bien lors de l'envoi que tu souhaites avoir l'adresse mail de ton représentant dans la zone "De:" ?
Avec le publipostage, je ne pense pas que ce soit possible.
C'est possible d'envoyer le mail directement depuis Excel, dans ce cas, tu pourras choisir l'expéditeur.
Par contre, ton texte doit être écrit dans la macro.

A te relire

Martial
 

Tentative

XLDnaute Occasionnel
Re : word/outlook 2013 publipostage sous un autre nom

Bonjour,

Avoir un objet : DE (FROM) en VBA m'intéresse.

J'ai donc regardé les Objets de Outlook 2013, tant dans Excel que dans Outlook lui-même.

Je n'ai pas trouvé d'objet DE (FROM) en VBA.

Je continue les recherches.


Tentative
 

Yaloo

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Bonjour Tentative, le forum,

Il existe .SentOnBehalfOfName pour choisir l'expéditeur, mais ce n'est pas exploitable dans un publipostage. C'est pourquoi j'indiquais qu'il était possible de le faire avec une macro mais pas en publipostage.

A+

Martial
 

oceanex

XLDnaute Nouveau
Re : word/outlook 2013 publipostage sous un autre nom

Merci à tous pour votre aide
vous êtes vraiment incroyable :)

je suis plutôt débutante en macro, mais j'ai déja fait un petit mélange de publipostage et de VB avec Outlook

c'est Oliv sur un forum qui avait laissé cette Macro

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As _
Boolean)
'by oliv' 05/02/2007 Pour publipostage avec PJ

If Item.Class = olMail Then
Dim objCurrentMessage As MailItem
Set objCurrentMessage = Item
If UCase(objCurrentMessage.Subject) Like "*PUBLIPOSTAGE*" Then

'Pour ajouter un document personnalisé d'après le destinataire _
du mail décommenter
' ici le nom du document est "****@*****.***"
docperso = "C:\testpubli\" & objCurrentMessage.To & ".xls"
objCurrentMessage.Attachments.Add Source:=docperso

'On supprime le terme PUBLIPOSTAGE du sujet
objCurrentMessage.Subject = Replace(objCurrentMessage.Subject, _
"PUBLIPOSTAGE ", "")
'On sauvegarde le mail
objCurrentMessage.Save
End If
Set objCurrentMessage = Nothing
End If
End Sub

je me demande si cela peut être explotable avec ton idée de .SentOnBehalfOfName ?
la macro a oliv mettait des pièce jointe différente pour chaque personne, elle filtrait les courriels qui avaient le mot "publipostage" et à la fin de la macro enlevait le mot "publipostage"
J'avais trouvé sont idée super brillante.

Merci encore !
 

oceanex

XLDnaute Nouveau
Re : word/outlook 2013 publipostage sous un autre nom

en outlook est ce qu'on peut ouvrir un fichier excel et allé lire sont contenue ?
et a partir de l'adresse courriel décaller et trouvé l'adresse du représentant et ensuite le mettre dans .SentOnBehalfOfName ?

Je prendrais la petite Macro a oliv pour filtrer ceux qui aurait le sujet "publipostage". ?
 

mromain

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Bonjour

Voici un début de piste avec une adaptation de la méthode (très élégante) d’Oliv pour permettre de passer une adresse mail dans le sujet du mail lors d’un publipostage.
VB:
'modèle qui sera recherché dans le sujet du mail où * contient l'adresse mail de "envoyé de la part de"
'exemple de sujet de mail valide : "bla bla bla {SentOnBehalfOf:adresse@mail.fr}"
Private Const Pattern_SentOnBehalfOf As String = "{SentOnBehalfOf:*}"


Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim leftPart As String, rightPart As String, mailAddr As String
    
    If Item.Class = olMail Then
        'contrôler si le sujet contient le pattern
         If Item.Subject Like "*" & Pattern_SentOnBehalfOf & "*" Then
            
            'décomposer la construction du pattern et récupérer l'adresse mail
             leftPart = Left(Pattern_SentOnBehalfOf, InStr(Pattern_SentOnBehalfOf, "*") - 1)
            rightPart = Mid(Pattern_SentOnBehalfOf, InStr(Pattern_SentOnBehalfOf, "*") + 1, 9 ^ 9)
            
            mailAddr = Right(Item.Subject, Len(Item.Subject) - InStr(Item.Subject, leftPart) - Len(leftPart) + 1)
            mailAddr = Left(mailAddr, Len(mailAddr) - Len(rightPart))
            
            'supprimer le sujet du mail (enlever le pattern)
             Item.Subject = Replace(Item.Subject, leftPart & mailAddr & rightPart, vbNullString)
            
            'modifier le "envoyer de la part de" du mail avec l'adresse mailAddr
             '...
             '...
             '...
             MsgBox "Adresse mail : """ & mailAddr & """.", vbInformation, "Info"
            
            'Sauver les modifications
             Item.Save

        End If
    End If
End Sub

Ce fil m’a permis de découvrir la méthode Ce lien n'existe plus, mais elle semble un peu foireuseCe fil le montre.

Appliqué à ton cas, j’ai pas réussi à la faire fonctionner lors de l’envoi du mail (d’où la simple MsgBox dans l’exemple).
Par contre, cela marche très bien avec ce code :
VB:
Sub Test()
Dim mItem As MailItem

    Set mItem = Application.CreateItem(olMailItem)
    With mItem
        .Subject = "ddd"
        .Body = "sdgfsdg"
        .SentOnBehalfOfName = "blabla@tutu.com"
        .Display
    End With
End Sub

Difficile de comprendre… :confused:

J’avais déjà creusé le problème de "envoyé par" en VBA ici. Cela fonctionnait sur mon PC entre deux comptes installés dans Outlook, mais ne semblait pas fonctionner dans le cadre d’un compte lié à un annuaire d’entreprise (c’est du moins ce que j’ai compris du message de ter).

Bref, sujet intéressant, mais pas si simple.

A+
 

Yaloo

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Bonsoir Oceanex, mromain, le forum,

Avec ceci peut-être :
VB:
Option Explicit

Sub EnvoiAutomatiqueMail()
  Dim OutlookApp As Object, OutlookMail As Object
  Dim Exped$, strbody$, i&
  'Si Outlook n'est pas ouvert
  If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
  'Suivant les lignes de ton tableau
  For i = 2 To [A65536].End(3).Row
    'Choix du vendeur et de son adresse mail
    Select Case Cells(i, 2)
      Case "clark": Exped = "clark.zzzz@orange.fr"
      Case "Bruce": Exped = "Bruce.xxxx@orange.fr"
      Case "Oliver": Exped = "Oliver.yyyy@orange.fr"
    End Select
  Set OutlookApp = CreateObject("Outlook.Application")
  Set OutlookMail = OutlookApp.CreateItem(0)
    strbody = "Bonjour " & Cells(i, 1) & "," & Chr(13) & _
         "Merci de faire affaire avec nous," & Chr(13) & _
         "Cette année vous avez acheté pour " & Cells(i, 3) & Chr(13) & _
         "Merci," & Chr(13) & Chr(13) & Cells(i, 2) & Chr(13) & "mailto:" & Exped
    On Error Resume Next
    With OutlookMail
      'Choisir l'adresse d'envoi
      .SentOnBehalfOfName = Exped
      .Subject = "CA"
      .To = Cells(i, 4)
      .Body = strbody
      .Display 'pour voir
      '.Send 'pour envoyer
    End With
  'recommence la procedure pour la ligne suivante
  Next i
End Sub
Function OutlookOuvert() As Boolean
Dim oOL As Object
  On Error Resume Next
  Set oOL = GetObject(, "Outlook.Application")
  On Error GoTo 0
  OutlookOuvert = Not (oOL Is Nothing)
  Set oOL = Nothing
End Function

Pour le pied de document, il doit être possible de mettre une signature par vendeur, ce qui évitera d'avoir mailto.

A+

Martial
 

Pièces jointes

  • exemplepublipostage.xlsm
    16.3 KB · Affichages: 141

Yaloo

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Re,

Voici le fichier avec la possibilité d'insérer la signature des vendeurs.
Pour ça, aller dans Outlook, créer une signature par vendeur avec l'adresse mail du vendeur.
VB:
Option Explicit

Sub EnvoiAutomatiqueMail()
  Dim OutlookApp As Object, OutlookMail As Object
  Dim SigString$, Signature$, MaSignature$
  Dim Exped$, strbody$, i&
  'Si Outlook n'est pas ouvert
  If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
  'Suivant les lignes de ton tableau
  For i = 2 To [A65536].End(3).Row
    'Choix du vendeur et de son adresse mail
    Select Case Cells(i, 2)
      Case "clark": Exped = "clark.zzzz@orange.fr"
      Case "Bruce": Exped = "Bruce.xxxx@orange.fr"
      Case "Oliver": Exped = "Oliver.yyyy@orange.fr"
    End Select
    
  ' recupere la signature outlook, definis à qui envoyer, l'objet et ajoute la signature outlook au corps du mail "strbody"
  MaSignature = Cells(i, 2) & ".htm"
  'Normalement l'emplacement est dans AppData\Microsoft\Signatures\
  SigString = Environ("appdata") & "\Microsoft\Signatures\" & MaSignature
  'Vérification de la présence de la signature dans le répertoire
  If Dir(SigString) <> "" Then
    Signature = GetBoiler(SigString)
   Else
    Signature = ""
  End If
    
  Set OutlookApp = CreateObject("Outlook.Application")
  Set OutlookMail = OutlookApp.CreateItem(0)
    strbody = "Bonjour " & Cells(i, 1) & ",<BR>" & _
         "Merci de faire affaire avec nous,<BR><BR>" & Chr(13) & _
         "Cette année vous avez acheté pour " & Cells(i, 3) & "<BR>" & _
         "Merci,<BR><BR>" & Cells(i, 2) & "<BR>" & Signature
    On Error Resume Next
    With OutlookMail
      'Choisir l'adresse d'envoi
      .SentOnBehalfOfName = Exped
      .Subject = "CA"
      .To = Cells(i, 4)
      .HTMLBody = strbody
      .Display 'pour voir
      '.Send 'pour envoyer
    End With
  'recommence la procedure pour la ligne suivante
  Next i
End Sub
Function OutlookOuvert() As Boolean
Dim oOL As Object
  On Error Resume Next
  Set oOL = GetObject(, "Outlook.Application")
  On Error GoTo 0
  OutlookOuvert = Not (oOL Is Nothing)
  Set oOL = Nothing
End Function
Function GetBoiler(ByVal sFile As String) As String
  'Dick Kusleika
  Dim fso As Object
  Dim ts As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
  GetBoiler = ts.readall
  ts.Close
End Function

A+

Martial

PS : Les fonctions ne sont pas de moi mais je ne me rappelle plus de qui, merci à lui :eek:
 

Pièces jointes

  • exemplepublipostage avec signature.xlsm
    20 KB · Affichages: 152

mromain

XLDnaute Barbatruc
Re : word/outlook 2013 publipostage sous un autre nom

Bonsoir Martial,

Merci pour le partage !
J'aime beaucoup comment est insérée la signature dans le mail :)

Je suis allé voir comment sont faits les fichiers signature, c'est quand même bien complexe pour quelques lignes...

A+
 

oceanex

XLDnaute Nouveau
Re : word/outlook 2013 publipostage sous un autre nom [resolue]

j'ai oublié de remercie chaque personne qui m'on aidé.
vraiment merci beaucoup
et aussi pour l'ajout de signature c'est vraiment trop une bonne idée !!!