Création de mail outlook avec VBA

@ Michel

Merci pour les infos ...!!!

Tu sais, comme moi, que la fiabilité de SendKeys n'est pas des plus parfaites ...

En effet, le mieux est un code html à mettre dans MonMail.HTMLbody.

On devient passionné d'excel à partir de combien de posts ... tu carbures au turbo !

Salut Michel ...

Avec tes 1'010 messages ... tu devrais avoir viré au bleu ... le très joli Bleu des Impliqués ...!!!

Donc le "fils-d'acier" ... va rapidement devenir Steelson ...

Bonjour,

Je reviens vers vous toujours sur le sujet de la création de mon mail auto (thème que j'ai laissé un peu de côté dernièrement ).

Tout fonctionne avec le code ci-dessous sauf la copie du texte... Avec le code ci-dessous le texte copié est "SendKeys "^c", True". Donc j'arrive à faire un copier coller mais pas le bon texte...

On dirai vraiment que la copie sur le fichier Excel ne fonctionne pas...

Ce qui est dommage quand on sait que la PJ et la signature auto (avec image) fonctionne :'(

Sub Création_email()

'Déclaration des variables

Dim messagerie As Object
Dim courriel As Object
Dim PDF As String
Dim Semaine As Integer
Dim Mois As String
Dim Année As Integer

Semaine = Range("Semaine")
Mois = Range("Mois")
Année = Range("Année")
texte = Range("texte")

Sheets("bla_bla").Select
Range("texte").Select
SendKeys "^c", True

PDF = "aaa/bbb.pdf"

'Création du message outlook

Set messagerie = CreateObject("outlook.application")
Set courriel = messagerie.CreateItem(0)

If PDF = "Faux" Then Exit Sub
If VarType(PDF) = vbBoolean Then Exit Sub

With courriel
    .to = "bbb@aaa.fr"
    .cc = "bbb@aaa.fr"
    .Subject = "Tableau de pilotage Sem " & Semaine
    .Attachments.Add (PDF)
    .display
End With

    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^v", True
    Application.CutCopyMode = False

Set courriel = Nothing
Set messagerie = Nothing

End Sub

Bonjour

essaye ceci

Sheets("bla_bla").Select
Range("texte").copy

au lieu de

Sheets("bla_bla").Select
Range("texte").Select
SendKeys "^c", True

car en effet pour la copie tu restes dans la même application, pas besoin d'envoyer / simuler les touches clavier.

Mais attention à ne pas intervenir sur le presse-papier pendant la procédure !

J'ai déjà essayé cette solution là étant donné que c'est la 1ére que tu m'avais proposé

curieux curieux !!

passe juste pour voir le

With courriel
    .Attachments.Add (PDF)
End With

après le

   
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^v", True
    Application.CutCopyMode = False

j'essaye ça demain matin

Voici la fin du code modifié. Une copie s'effectue mais pas la bonne. Cette fois-ci cela copie "End with" dans le mail.

With courriel
    .to = "aaa@bbb.fr"
    .cc = "aaa@bbb.fr"
    .Subject = "Tableau de pilotage Sem " & Semaine
    '.Attachments.Add (PDF)
    .display
End With

    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^v", True
    Application.CutCopyMode = False

With courriel
    .Attachments.Add (PDF)
End With

Set courriel = Nothing
Set messagerie = Nothing

End Sub

Bonjour,

Il ne faut pas hésiter à joindre la totalité de ta macro ...

voila

Sub Création_email()

'Déclaration des variables

Dim messagerie As Object
Dim courriel As Object
Dim PDF As String
Dim Semaine As Integer
Dim Mois As String
Dim Année As Integer

Semaine = Range("Semaine")
Mois = Range("Mois")
Année = Range("Année")
texte = Range("texte")

Sheets("bla_bla").Select
Range("texte").Select
SendKeys "^c", True

PDF = "aazergg\yygggg\juuhytgf.pdf"

'Création du message outlook

Set messagerie = CreateObject("outlook.application")
Set courriel = messagerie.CreateItem(0)

If PDF = "Faux" Then Exit Sub
If VarType(PDF) = vbBoolean Then Exit Sub

With courriel
    .to = "aaa@bbb.fr"
    .cc = "aaa@bbb.fr"
    .Subject = "Tableau de pilotage Sem " & Semaine
    '.Attachments.Add (PDF)
    .display
End With

    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^v", True
    Application.CutCopyMode = False

With courriel
    .Attachments.Add (PDF)
End With

Set courriel = Nothing
Set messagerie = Nothing

End Sub

Re,

Y-a-t-il une raison pour laquelle tu ne déclares pas la variable texte ...???

Dans ton fichier .... la plage que tu as nommée texte ... est-elle correctement définie ...??? (control F3 pour vérifier)

non il n'y a pas de raison je n'y ai tout simplement pas pensée

Par contre la plage est correctement définie.

Re,

Je me suis mal exprimé ...

Après ces deux vérifications ... as-tu refait un test ... ???

Je viens de déclarer la variable. J'ai maintenant un message d'erreur dans le mail qui dit : "Fichier introuvable.Vérifiez que le chemin d'accès et le nom du fichier sont corrects."

La PJ est pourtant présente. Par contre la copie qui s’effectuait avant (le End with) n'est plus là.

Re,

Le message d'erreur signifie simplement ... que tu dois vérifier l'adresse exacte et le nom de ton PDF ...

adresse et nom que je n'ai pas changé et qui fonctionne très bien... ^^

Donc c'est assez bizarre d'avoir ce message alors que je ne l'avais pas avant.


le message d'erreur n'est plus là alors que je n'ai rien touché seulement relancé la macro -_-'


Bon je viens de tester quelque chose...

Si je copie le texte qui m'intéresse avant de lancer la macro et que je lance la macro ensuite, le fameux texte est bien copier dans mon mail. Le ctrl + c dans la macro n'a pas l'air de fonctionner alors que le ctrl + v si...

emmanuelle.b a écrit :

Bon je viens de tester quelque chose...

Si je copie le texte qui m'intéresse avant de lancer la macro et que je lance la macro ensuite, le fameux texte est bien copier dans mon mail. Le ctrl + c dans la macro n'a pas l'air de fonctionner alors que le ctrl + v si...

Bonjour,

d'abord si tu avais "end with" recopié, c'est tout simplement la dernière manip que tu avais faite dans la macro, car celle-ci ne contenait plus du tout de "copier" .. donc normal

si tu fais un copier avant de lancer la macro, c'est donc normal aussi de retrouver ce "copier" dans le mail

je ne vois pas d'autres solutions que de refaire unrange("quelquechose").copyau début de ta macro, solution que j'utilise et que tu as dééjà testée ... sans succès !! c'est là que je ne comprends pas du tout ! mais attention, rien ne doit intervenir sur le presse-papier pendant ce temps, aucun autre action manuelle ou automatique, sinon c'est bien celle-ci que tu vas retrouver ...

J'ai remis le range("...").copy au début de la macro, mais rien ne se copie dans le mail. Ce qui prouve bien qu'il n'y a rien dans le presse papier...

je suis dubitatif, et là je ne sais plus comment t'aider

sauf à connaître la Range("machinchose") et son contenu ...

d'ailleurs essaye de faire un Ctrl+C sur cette fameuse "range" et un Ctrl+V dans n'importe quel document (notepas, autre excel, word, ou bien même ici)

je viens de revérifier mon code qui fonctionne nickel avec 2 pdf attachés

    Range("texte").Copy

    Set messagerie = CreateObject("Outlook.Application")
    Set courriel = messagerie.CreateItem(0)
    With courriel
        .To = Range("who").Offset(3, 0) & " " & Range("who").Offset(2, 0)
        .Cc = destinataires
        .Subject = Range("titre")
        .ReadReceiptRequested = True
        .Attachments.Add nompdf1 & ".pdf"
        .Attachments.Add nompdf2 & ".pdf"
        .display
    End With

    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^v", True
    Application.CutCopyMode = False

    Kill nompdf1 & ".pdf"
    Kill nompdf2 & ".pdf"
    Set courriel = Nothing
    Set messagerie = Nothing
Rechercher des sujets similaires à "creation mail outlook vba"