Microsoft 365 macro excel

naf naf

XLDnaute Nouveau
bonjour,
je souhaite insérer une pièce jointe pdf dans un mail déjà pré enregistrer au format oft .
J'ai écrit un bout de code ou il m'ouvre le fichier oft mais il me crée un autre mail pour m'insérer la pièce jointe .
Pouvez vous m'aider svp .

voici mon bout de code :

Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments
Set myItem = Outlook.Application.CreateItem(olMailItem)

Set myAttachments = myItem.Attachments
' lien hypertext pour ouverture de .oft
Range("M40").Select

' insertion pièce jointe
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
myAttachments.Add "c:\semainier- Version du 15-01-2021.pdf", _
olByValue, 1, "Semainier"
myItem.Display
 
Solution
Re

Donc cela fonctionnait en fait... :rolleyes:
(C'est amusant...de perdre son temps pour des fautes d'inattention)

Et quid des "chaleureux remerciements" en cas de résolution de la question initiale?
;)

PS: Précisions
Oui , j'ai toujours en main mon crayon "humour/titillement/ironie et cie" pour rédiger ce message.
Mais tout cela sur un ton amical.

naf naf

XLDnaute Nouveau
Re

Est-ce tu avais lu le message#2 attentivement? ;)
Si oui tu as remarqué les mots en gras
en guise de test
Donc à tester dans un classeur vierge qu'on aura enregistrer dans un dossier dans le lequel on aura mis un fichier PDF quelconque pour faire le test.
Et comme je le précisais ensuite on adapte avant de lancer la macro
Exemple de test
1) J'enregistre mon classeur de test dans C:\Users\Staple\Test
Donc ce petit test ci-dessous affichera "C:\Users\Staple\Test\"
VB:
Sub chemin()
Repertoire = ThisWorkbook.Path & "\"
MsgBox Repertoire
End Sub
2) Je copie donc dans C:\Users\Staple\Test un fichier PDF que je nomme pour mon test: toto.pdf
3) J'adapte le code VBA en conséquence
Enrichi (BBcode):
Sub test_mail_II()
Dim P_Jointe$, Repertoire$
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "toto.pdf" ' à adapter
    With CreateObject("Outlook.Application").CreateItem(0)
        .To = "staple1600@ugumma.fr" ' à adapter
        .Subject = "Objet TEST" ' à adapter
        .Body = " Ceci est un test" ' à adapter
        .Attachments.Add P_Jointe
        .Display
        '.Send
    End With
End Sub
4) Je lance le test
ca fonctionne
 

Staple1600

XLDnaute Barbatruc
Re

[message en mode "humour staplien"]
Si je puis me permettre, le message #2 contenait un code fonctionnel et les explications suffisantes pour le tester. ;)
Le message#4 aurait du être
je viens d'essayer.
Test OK, le mail est bien créé. Et le PDF attaché au mail.
Merci encore pour votre aide
NB: Ce qui me permet de voir qu'il y avait déjà eu un merci ;)
[message en mode "humour staplien"]

Pour le reste, n'ayant pas plus d'éléments (le contenu, ni la mise en forme de l*oft), je passe le relai à d'autre ;)

NB: Quand j'utilise un modèlé Outlook, mon code VBA est dans Outlook
Et si je dois envoyer un mail à partir d'Excel, je créé et formate le mail en dur dans le code VBA (avec HTMLBody)
 

Staple1600

XLDnaute Barbatruc
Re

=>naf naf
Comme mon thé est trop chaud, que un petit G••gle suffira pour le faire refroidir

A tester
1) Directement dans Outlook
(en faisant les adaptations nécessaires)
2) Dans Excel, également avec les adaptions qui s'imposent.
VB:
Sub CreateFromTemplate() 
 Dim MyItem As Outlook.MailItem 
 
 Set MyItem = Application.CreateItemFromTemplate("C:\statusrep.oft") 
 MyItem.Display 
End Sub 
 
Sub CreateTemplate() 
 Dim MyItem As Outlook.MailItem 
 
 Set MyItem = Application.CreateItem(olMailItem) 
 MyItem.Subject = "Status Report" 
 MyItem.To = "Dan Wilson" 
 MyItem.Display 
 MyItem.SaveAs "C:\statusrep.oft", OlSaveAsType.olTemplate 
End Sub
NB: Code exemple issu de l'aide en ligne de Microsoft

PS: Le code à prendre en compte pour la question à traiter étant uniquement celle-ci: Sub CreateFromTemplate

Pour joindre une PJ, amender le code avec ma précédente proposition
=>cf la ligne Attachments.Add
 

naf naf

XLDnaute Nouveau
Re

=>naf naf
Comme mon thé est trop chaud, que un petit G••gle suffira pour le faire refroidir

A tester
1) Directement dans Outlook
(en faisant les adaptations nécessaires)
2) Dans Excel, également avec les adaptions qui s'imposent.
VB:
Sub CreateFromTemplate()
Dim MyItem As Outlook.MailItem

Set MyItem = Application.CreateItemFromTemplate("C:\statusrep.oft")
MyItem.Display
End Sub

Sub CreateTemplate()
Dim MyItem As Outlook.MailItem

Set MyItem = Application.CreateItem(olMailItem)
MyItem.Subject = "Status Report"
MyItem.To = "Dan Wilson"
MyItem.Display
MyItem.SaveAs "C:\statusrep.oft", OlSaveAsType.olTemplate
End Sub
NB: Code exemple issu de l'aide en ligne de Microsoft

PS: Le code à prendre en compte pour la question à traiter étant uniquement celle-ci: Sub CreateFromTemplate

Pour joindre une PJ, amender le code avec ma précédente proposition
=>cf la ligne Attachments.Add
je test et je reviens ...
 

Staple1600

XLDnaute Barbatruc
Re

En théorie, tu devrais être en train de tester un code VBA de ce genre
VB:
Sub test_mail_avec_modele()
Dim Outlook_Mod$, P_Jointe$, Repertoire$
Outlook_Mod = "C:\statusrep.oft" ' à adapter
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
    With CreateObject("Outlook.Application").CreateItemFromTemplate(Outlook_Mod)
        .To = "adressemail@domain.fr" ' à adapter
        .Subject = "Objet TEST" ' à adapter
        .Body = " Ceci est un test" ' à adapter
        .Attachments.Add P_Jointe
        .Display
        '.Send
    End With
End Sub
Est-ce le cas?
Et si oui que donne le test?

NB: Je ne peux pas tester. Ici je n'ai pas Outlook.

PS: Le premier code (message#2) émanait de mes archives
(donc testé et fonctionnel)
 

naf naf

XLDnaute Nouveau
Re

En théorie, tu devrais être en train de tester un code VBA de ce genre
VB:
Sub test_mail_avec_modele()
Dim Outlook_Mod$, P_Jointe$, Repertoire$
Outlook_Mod = "C:\statusrep.oft" ' à adapter
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
    With CreateObject("Outlook.Application").CreateItemFromTemplate(Outlook_Mod)
        .To = "adressemail@domain.fr" ' à adapter
        .Subject = "Objet TEST" ' à adapter
        .Body = " Ceci est un test" ' à adapter
        .Attachments.Add P_Jointe
        .Display
        '.Send
    End With
End Sub
Est-ce le cas?
Et si oui que donne le test?

NB: Je ne peux pas tester. Ici je n'ai pas Outlook.

PS: Le premier code (message#2) émanait de mes archives
(donc testé et fonctionnel)
je test mais il me refait le coup de l'erreur sur la ligne .Attachments
je cherche pourquoi
 

naf naf

XLDnaute Nouveau
Sub test_mail_avec_modele()

Dim Outlook_Mod$, P_Jointe$, Repertoire$

Outlook_Mod = "C:\Users\jh608188\Documents\test oft.oft" ' à adapter

Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "test mail.txt" ' à adapter

With CreateObject("Outlook.Application").CreateItemFromTemplate(Outlook_Mod)
.To = "adressemail@domain.fr" ' à adapter
.Subject = "Objet TEST" ' à adapter
.Body = " Ceci est un test" ' à adapter
.Attachments.Add P_Jointe
.Display

End With
End Sub
 

naf naf

XLDnaute Nouveau
Sub test_mail_avec_modele()

Dim Outlook_Mod$, P_Jointe$, Repertoire$

Outlook_Mod = "C:\Users\jh608188\Documents\test oft.oft" ' à adapter

Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "test mail.txt" ' à adapter

With CreateObject("Outlook.Application").CreateItemFromTemplate(Outlook_Mod)
.To = "adressemail@domain.fr" ' à adapter
.Subject = "Objet TEST" ' à adapter
.Body = " Ceci est un test" ' à adapter
.Attachments.Add P_Jointe
.Display

End With
End Sub
je précise que les 3 fichiers .oft .txt et le fichier excel sont dans le meme repertoire
 

Staple1600

XLDnaute Barbatruc
Re

Qu'affiche ce test?
VB:
Sub test()
Repertoire = ThisWorkbook.Path & "\"
MsgBox Repertoire
P_Jointe = Repertoire & "test mail.txt"
MsgBox P_Jointe
End Sub
On est bien d'accord que test mail.txt est stocké dans le même répertoire que le classeur?

Et quelle est le message d'erreur qui s'affichait?
 

naf naf

XLDnaute Nouveau
Re

Qu'affiche ce test?
VB:
Sub test()
Repertoire = ThisWorkbook.Path & "\"
MsgBox Repertoire
P_Jointe = Repertoire & "test mail.txt"
MsgBox P_Jointe
End Sub
On est bien d'accord que test mail.txt est stocké dans le même répertoire que le classeur?

Et quelle est le message d'erreur qui s'affichait?
oui les 3 fichiers sont au meme endroit,
l'erreur sur .Attachment est :
Erreur d'execution '-2147024894 (80070002)':
 

Discussions similaires

Réponses
3
Affichages
706

Statistiques des forums

Discussions
312 240
Messages
2 086 517
Membres
103 239
dernier inscrit
wari