Ajout de signature OUTLOOK dans macro copier de cellule

Bonjour,

Suite à de nombreux tests, recherches sur internet etc..., je me tourne vers vous car je n'arrive vraiment pas à trouver la solution.

Voici mon problème, je souhaite intégrer ma signature de mail OUTLOOK au sein de ma macro qui envoi des mails grace à une loop insérer dans le code.

J'ai déjà le fichier HTM correspondant à la signature que je souhaite intégrer mais toutes les possibilités de code que j'ai essayé ont échoué.

Peut être avez-vous une solution

Voici le code :

Sub Mail_Selection_Range_Outlook_Body()

    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object

    Set rng = Nothing
    On Error Resume Next

    Set rng = Sheets("ANNONCE").Range("A1:G33").SpecialCells(xlCellTypeVisible)
    'You can also use a fixed range if you want
    'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If rng Is Nothing Then
        MsgBox "The selection is not a range or the sheet is protected" & _
               vbNewLine & "please correct and try again.", vbOKOnly

    End If

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    Sheets("BDD TRANSPORTEURS").Activate
 ActiveSheet.Range("A1").Select

Do
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .SentOnBehalfOfName = "exploitation centrale france"
        .To = ActiveCell.Value
        .CC = ""
        .BCC = ""
        .Subject = " OFFER LOADS W" & Worksheets("ANNONCE").Range("C12").Value & ""
        .HTMLBody = RangetoHTML(rng)
        .Send   'or use .Display
    End With
    On Error GoTo 0

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
    ActiveCell.Offset(1, 0).Select
    Loop Until IsEmpty(ActiveCell)

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Merci par avance de votre aide !

Bonne journée

Bonjour,

Théoriquement on doit pouvoir comme ceci :

.HTMLBody = "bla bla" & "<br>" & Signature

en allant chercher sa signature par GetBoiler

    ' récupération de la signature
    ' attention sign.htm à modifier si besoin
    SigString = Environ("appdata") & "\Microsoft\Signatures\sign.htm"
    ' si l'image ne peut pas être récupérée :
    ' SigString = Environ("appdata") & "\Microsoft\Signatures\sign.txt"
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
        ' uniquement si l'image peut être récupérée :
        Signature = Replace(Signature, "src=""sign_fichiers/", "src=""" & Environ("appdata") & "\Microsoft\Signatures\" & "sign_fichiers\")
    Else
        Signature = ""
    End If

et

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 c'est la théorie ! essaie, chez moi cela n'a jamais fonctionné !!

je peux te donner d'autres solutions de contournement ... à suivre

Bonjour Steelson,

Merci pour ta réponse

Par contre la partie 2 & 3 du code, je ne vois pas ou les insérer dans mon code actuel ?

Tu aurais des indications ?

Finalement j'ai réussi à diviser les fonctions pour les faire fonctionner

Ca fonctionne à 70%, en effet les images qui devraient s'insérer ne le sont pas


Voici le message à la place des images :

Impossible d'afficher liée. Le fichier a peut-être déplacé, renommée ou supprimé. Vérifiez que la liaison pointe vers le fichier et l'emplacement corrects.

VINCENTPRRT a écrit :

Bonjour Steelson,

Merci pour ta réponse

Par contre la partie 2 & 3 du code, je ne vois pas ou les insérer dans mon code actuel ?

Tu aurais des indications ?

Voici un exemple ...

Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim nompdf As String
Const olFormatHTML As Long = 2

Dim SigString As String
Dim Signature As String

    ' récupération de la signature
    ' attention sign.htm à modifier si besoin
    SigString = Environ("appdata") & "\Microsoft\Signatures\sign.htm"
    ' si l'image ne peut pas être récupérée :
    ' SigString = Environ("appdata") & "\Microsoft\Signatures\sign.txt"
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
        ' uniquement si l'image peut être récupérée :
        Signature = Replace(Signature, "src=""sign_fichiers/", "src=""" & Environ("appdata") & "\Microsoft\Signatures\" & "sign_fichiers\")
    Else
        Signature = ""
    End If

    ' création fichier et stockage dans le dossier temporaire du PC
    nompdf = Environ("Temp") & "\" & "Consignes"
    Sheets("Consignes").ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .To = [B1]
        .CC = [B2]
        .Bcc = [B3]
        .Subject = [B4]
        .BodyFormat = olFormatHTML
        .HTMLBody = texthtml([B6:B12]) & "<br>" & Signature
        ' si l'image ne peut pas être récupérée :
        ' .HTMLBody = "bla bla bla" & "<br>" & Replace(Signature, vbCrLf, "<br/>")
        .Attachments.Add nompdf & ".pdf"
        .display ' ou .send pour envoi direct
    End With

    ' suppression du fichier temporaire
    Kill Environ("Temp") & "\" & "Consignes" & ".pdf"

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
VINCENTPRRT a écrit :

Ca fonctionne à 70%, en effet les images qui devraient s'insérer ne le sont pas

Voici le message à la place des images :

Impossible d'afficher liée. Le fichier a peut-être déplacé, renommée ou supprimé. Vérifiez que la liaison pointe vers le fichier et l'emplacement corrects.

Pas étonnant car les images sont stockées "à part" du texte ...

La seule solution que j'ai trouvée et qui est un peu limitative (il vaut mieux n'envoyer qu'un seul mail à la fois) est de faire un copier/coller par sendkeys.

Voici un exemple

Merci pour ton retour

Je n'arrive pas à comprendre quelle partie de ton code permet de copier/coller l'image voulue ?

Salut steelson, VINCENTPRRT

Alors je participe à ce sujet, étant donné que j'utilise la macro de steelson (qui m'avait dépanné sur le sujet)

Voici la partie du code qui sert à copier / coller.

    Range("corpsdumail").Copy
    email.display
    Application.Wait (Now + TimeValue("0:00:01"))
'ajout de cette ligne pour copier dans le corps de mail
    Application.SendKeys "{TAB 3}", True
'sans cette ligne, chez moi cela va coller dans la partie destinataire.
   SendKeys "^v", True
    'Application.CutCopyMode = False

    Set email = Nothing
    Set messagerie = Nothing

Bonne journée

Merci nonesofar13,

cela fait plaisir en effet de voir que tu t'es approprié le code

curieux, je n'ai eu besoin de tabuler qu'avec la partie agenda d'outlook pour ma part

@VINCENTPRRT

IL y a peut-être une solution comme suit :

    With OutMail
        .Display
        .SentOnBehalfOfName = "exploitation centrale france"
        .To = ActiveCell.Value
        .CC = ""
        .BCC = ""
        .Subject = " OFFER LOADS W" & Worksheets("ANNONCE").Range("C12").Value & ""
        .HTMLBody = RangetoHTML(rng) & "<br>" & .HTMLBody
        .Display
   End With
Rechercher des sujets similaires à "ajout signature outlook macro copier"