VBA Insérer la signature de celui qui envoi le mail

Fermé
Cocopsl - Modifié le 15 déc. 2020 à 16:19
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 - 24 déc. 2020 à 20:23
Bonjour,

J'ai fait le tour des forums et j'ai testé pas mal de codes mais je n'ai pas trouvé la solution à mon souci.

J'ai fait un code VBA qui imprime une zone d'impression en pdf et 'insère dans le mail généré.

Tout fonctionne bien sauf que la signature de celui qui lance la VBA ,et du coup généré le mail, ne se met pas dans le mail.

<gras>Que dois-je l'insérer dans le code pour la signature apparaisse ?

Voici mon code :
Sub IMPRIMERENPDF()


Dim Chemin As String, Fich As String, Rep As String, CheminComplet As String
 
Chemin = "A:\Users\Desktop"
Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.Name)
CheminComplet = Chemin & "\" & Fich & ".pdf"
Rep = Dir(Chemin & "\" & Fich & ".pdf")

 
If Rep = "" Then
    réponse = MsgBox("Le fichier n'existe pas, création du fichier PDFCreator", vbYesNo)
    If réponse = vbYes Then
Impression:
        ChDir Chemin
            ActiveSheet.PageSetup.PrintArea = "$B$3:$R$15"
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
             OpenAfterPublish = True ' affiche le fichier PDF
    Else
        MsgBox "Sortie de la procédure"
        Exit Sub
    End If
Else
    Réponse1 = MsgBox("le fichier existe voulez-vous le remplacer ?", vbYesNo)
    If Réponse1 = vbYes Then
        MsgBox "Remplacement du fichier existant"
        GoTo Impression
    Else
        MsgBox "Sortie de la procédure"
    End If
End If
Dim LeMail As Variant
Set LeMail = CreateObject("outlook.Application") 'crétion d'un objet Outlook
With LeMail.CreateItem(olMailItem)
             .attachments.Add CheminComplet
.Subject = "Suivi des chiffres de votre équipe"
.To = Range("B1")
.Body = " Bonjour," & vbCrLf & "Vous trouverez en pièce jointe le suivi de la production pour votre équipe. " & vbCrLf & "Cordialement"

.display

End With

End Sub



Je vous remercie pour votre aide
A voir également:

3 réponses

f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
15 déc. 2020 à 16:08
0
Bonsoir,
Ne maîtrisant pas trop les VBA, je ne comprends pas tout dans le lien que vous m'avez mis.

Pouvez-vous m'aidez ?
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
Modifié le 17 déc. 2020 à 08:05
Bonjour,

Oui

sauf que la signature de celui qui lance la VBA

Qu'entendez vous par signature:
Une cellule?
Une signature definie pour Outlook?
Ceci implique un fichier signature dans le repertoire:
C:\Users\<UserName>\AppData\Roaming\Microsoft\Signatures
Pour chaque PC ou chaque Users d'un meme PC qui devront se connecter sur leur compte
0
Cocopsl > f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025
17 déc. 2020 à 13:14
Bonjour.
Merci pour votre réponse.
Effectivement c’est la signature Outlook de la personne qui lance la Vba.
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > Cocopsl
17 déc. 2020 à 17:52
Re,

Une facon de faire avec votre code
Sub IMPRIMERENPDF()
    Dim Chemin As String, Fich As String, Rep As String, CheminComplet As String
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim SigString As String
    Dim Signature As String
    
    Chemin = "A:\Users\Desktop"
    Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.Name)
    CheminComplet = Chemin & "\" & Fich & ".pdf"
    Rep = Dir(Chemin & "\" & Fich & ".pdf")
    
    If Rep = "" Then
        réponse = MsgBox("Le fichier n'existe pas, création du fichier PDFCreator", vbYesNo)
        If réponse = vbYes Then
Impression:
            ChDir Chemin
            ActiveSheet.PageSetup.PrintArea = "$B$3:$R$15"
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
            OpenAfterPublish = True ' affiche le fichier PDF
        Else
            MsgBox "Sortie de la procédure"
            Exit Sub
        End If
    Else
        Réponse1 = MsgBox("le fichier existe voulez-vous le remplacer ?", vbYesNo)
        If Réponse1 = vbYes Then
            MsgBox "Remplacement du fichier existant"
            GoTo Impression
        Else
            MsgBox "Sortie de la procédure"
        End If
    End If
    'Change only Mysig.htm to the name of your signature
    SigString = Environ("appdata") & _
                "\Microsoft\Signatures\Mysig.htm"

    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    With OutMail
        .To = Range("B1").Text
        .Subject = "Suivi des chiffres de votre équipe"
        .Body = " Bonjour," & vbCrLf & _
                    "Vous trouverez en pièce jointe le suivi de la production pour votre équipe. " & vbCrLf & _
                     "Cordialement" & vbCrLf & _
                     vbCrLf & _
                     vbCrLf & _
                     Signature
        .Attachments.Add CheminComplet
        .Display        'ouverture Outlook
        '.Send           'envoi direc sans ouverture Outlook
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


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
0
Cocopsl > f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025
18 déc. 2020 à 15:15
Bonjour,

Je vous remercie.
Je teste ce code et reviens vers vous si besoin.
Belle journée à vous.
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > Cocopsl
18 déc. 2020 à 17:25
Bonjour,

Ok
0
bonsoir.

Déjà j'ai crée une signature sans image, car apparemment l'image gênait.
Cela fonctionne si je mets le nom et l'extension de la signature en format texte. Si je l'enlève et que je laisse juste l'extension cela ne fonctionne pas. Je n'ai pas dû la mettre au bon endroit.
Je n'ai pas trouver la manipulation pour vous mettre mon fichier en PJ, voici ou je l'ai insérer.
 SigString = Environ("AppData") & _
                "\Microsoft\Signatures\CORINNE.txt"

    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If


Merci
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
19 déc. 2020 à 20:42
Re,
Juste l'extension! Sans le nom du fichier??????


Comprends pas , marche ou pas et dans quel contexte
0
Cocopsl > f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025
19 déc. 2020 à 21:37
je m’explique mal..... je m’excuse
Si je mets ma signature qui comprends une image qui s’appelle « Coco.html».... cela ne fonctionne pas.
J’ai créé une signature sans photo que j’ai appelé « « Corinne».
Si je mets dans cette partie du code: SigString = Environ("AppData") & _
"\Microsoft\Signatures\CORINNE.txt"
Cela fonctionne.
Mais cela ne fonctionnera que pour moi.

Je dois mal faire pour que cela fonctionne pour moi et mon collègue ?
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > Cocopsl
Modifié le 20 déc. 2020 à 07:31
Bonjour,
L'extention fichier signature doit être: .txt ou .rtf ou htm pas autre chose
Normale que ca ne "marche" pas sur un autre PC.
Je dois mal faire
Non, oublie de ma part, il faut modifier le code pour aller chercher le fichier signature dans le repertoire du PC
Je vous fais la modification
0
Cocopsl > f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025
20 déc. 2020 à 19:17
Merci pour votre aide j'attends votre retour !!!
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > Cocopsl
21 déc. 2020 à 08:01
Bonjour,

Devrait aller mieux. Je prends un fichier le premier fichier dans le repertoire signature s'il y en a un.
Message si y en a pas mais l'@mail partira

https://mon-partage.fr/f/gT8QMZ1m/
0