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.

Staple1600

XLDnaute Barbatruc
Bonjour le fil, naf naf

=>naf naf
Un petit exemple en guise de test
(faire les adaptations nécessaires dans le code avant de lancer la macro)
VB:
Sub test_mail()
Dim P_Jointe$, Repertoire$
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
    With CreateObject("Outlook.Application").CreateItem(0)
        .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
 

naf naf

XLDnaute Nouveau
Bonjour le fil, naf naf

=>naf naf
Un petit exemple en guise de test
(faire les adaptations nécessaires dans le code avant de lancer la macro)
VB:
Sub test_mail()
Dim P_Jointe$, Repertoire$
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
    With CreateObject("Outlook.Application").CreateItem(0)
        .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
merci beaucoup , j'essaye et je vous dit ce que cela donne
 

Staple1600

XLDnaute Barbatruc
Re

C'est pourtant explicite et indiqué dans les commentaires du code, non? ;)
Dim P_Jointe$, Repertoire$
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
Donc ici on note que le PDF est dans le dossier où se trouve le classeur Excel et que le fichier se nomme nomfichier.pdf

Donc il faut que le PDF: semainier- Version du 15-01-2021.pdf
soit au bon endroit
 

naf naf

XLDnaute Nouveau
Re

C'est pourtant explicite et indiqué dans les commentaires du code, non? ;)
Dim P_Jointe$, Repertoire$
Repertoire = ThisWorkbook.Path & "\"
P_Jointe = Repertoire & "nomfichier.pdf" ' à adapter
Donc ici on note que le PDF est dans le dossier où se trouve le classeur Excel et que le fichier se nomme nomfichier.pdf

Donc il faut que le PDF: semainier- Version du 15-01-2021.pdf
soit au bon endroit
oui le fichier j'arrive à l'ouvrir il est bien au bonne endroit, mais je sais pas pourquoi j'ai plutot l'impression qu'il reconnais pas la fonction .Attachements.Add
Sinon tous le reste fonctionne, si je fais juste un affichage du fichier cela fonctionne
 

Staple1600

XLDnaute Barbatruc
Re

C'est bien ce que je pressentais ...
j'avais écrit
Repertoire = ThisWorkbook.Path & "\"
Ce qui est donc le chemin du dossier où se trouve le classeur
Or sur ta copie d'écran ce tu écris n'a pas de sens :rolleyes:
Repertoire = ThisWorkbook.Path & "C:\Users\[...]"
Et là où c'est écrit en vert ' à adapter
bah faut adapter, non?
Parce si tu testes avec cet "adressemail@domain.fr", tu risques d'attendre longtemps avant de recevoir un mail ;)

NB: C'est plus pratique de copier/coller le code VBA dans le message qu'une copie d'écran.
Parce qu'avec une copie d'écran, il faut se fader la réécriture du code VBA.
 

naf naf

XLDnaute Nouveau
Re

C'est bien ce que je pressentais ...
j'avais écrit
Repertoire = ThisWorkbook.Path & "\"
Ce qui est donc le chemin du dossier où se trouve le classeur
Or sur ta copie d'écran ce tu écris n'a pas de sens :rolleyes:
Repertoire = ThisWorkbook.Path & "C:\Users\[...]"
Et là où c'est écrit en vert ' à adapter
bah faut adapter, non?
Parce si tu testes avec cet "adressemail@domain.fr", tu risques d'attendre longtemps avant de recevoir un mail ;)

NB: C'est plus pratique de copier/coller le code VBA dans le message qu'une copie d'écran.
Parce qu'avec une copie d'écran, il faut se fader la réécriture du code VBA.
merci de ta patience, j'avais compris que le répertoire je devais mettre l'adresse ou se trouve le fichier à cet endroit.
je retest et je reviens
 

Staple1600

XLDnaute Barbatruc
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

[ajout EDITION <=< rédigé en mode ironico-humoristique =>=>]
Je viens de voir que tu avais fini par être attentif à ce que j'écrivais.
;)
Et que par conséquent, tout ce qui s'est dit après le message#2 fut une perte de temps.
En découle que ta pénitence sera de faire les recherches idoines pour envoyer une PJ en utilisant un *.oft ;)
[/ajout EDITION <=< rédigé en mode ironico-humoristique =>=>]
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
677