Problème code envoi mail

Tout d’abord tu ne m’as pas mis dans ce fichier les 2 onglets :

celui qui fonctionne
celui qui ne fonctionne pas

ainsi pour moi de pouvoir cerner cette différence

de plus dans ton dernier fichier transmis j’ai mis un point d’arrêt juste après la ligne de définition de la variable Chemin pour connaitre celle-ci avec la variable Nomdossier non défini au préalable
En portant la souris dessus pour en prendre connaissance j’ai ceci :

en portant la souris sur Nomdossier pour en connaitre sa valeur j’ai ceci :

Donc tu peux constater comme moi que ces deux variables sont anormales :

Chemin = "C:\Users\langm\Documents\Archives MAIL AB\\"

Il manque la dernière partie que devait fournir la variable Nomdossier entre les 2 derniers caractères "\\"

Nomdossier = vide

Comme tu peux le constater dans la deuxième image

Si tu maintiens cette variable tu dois la définir avant celle qui la porte Chemin

Soit en dure ainsi :

Nomdossier = « nom du répertoire fichier pdf »

Soit en appelant un élément d’Excel qui la porte comme une cellule dans un onglet

Nomdossier = Sheets(« MAIL AB »).Range(« A1 ») si le nom du répertoire est en cellule « A1 » de l’onglet « MAIL AB »

Cela ne peut pas être autrement

Je ne peux t’en dire plus

Quel est le nom du répertoire dans lequel le fichier pdf est intégré et que l’intruction outlook doit utiliser pour le récupérer et que doit porter la variable Nomdossier ?

pourquoi 2 onglets ?

il n’y a que l’onglet " MAIL AB " c’est tout. A partir de cet onglet je lance mon code pour envoyer le mail et en même temps il le sauvegarde.

Le dernier fichier que je t’ai envoyé c’est juste un modèle pour te montrer que cela fonctionne.
Et chez moi cela fonctionne.

Après, comme je l’ai indiqué c’est toi l’expert. Donc si tu peux modifier ce code afin qu’il soit correct d’après toi, je prends.

C’est toi qui m’as transmis cela :

« je ne comprends pas ! J’ai dans le même fichier un onglet avec lequel je procède de la même façon et qui lui fonctionne quand j’envoie le mail ! »

Je ne l’ai pas inventé

Lit ma réponse concernant ton dernier fichier et réponds moi concernant le nom du répertoire du fichier pdf concerné

Oui, je voulais dire que dans mon fichier réel il y a un autre onglet qui a le même code que celui que je viens de te transmettre.

Et c’est dans celui que j’ai vu qu’il y avait l’erreur de ligne comme je l’avais expliqué.

Donc il est identique a celui-ci a part le chemin bien sûr.

Donc ce code fonctionne t’il dans un onglet ou pas ?
Si oui il faut me transmettre le fichier correspondant avec cet onglet opérationnel pour lui afin qu’en cerne la raison

J’ai impérativement besoin pour ce code du nom du répertoire dans lequel le pdf est enregistré et récupéré par les instruction Outlook

« Et c’est dans celui que j’ai vu qu’il y avait l’erreur de ligne comme je l’avais expliqué. »

Peut-être mais les anomalies que je t’ai décrites sont toujours d’actualité et donc doivent être corrigées donc il faut des précisions sur le nom du répertoire du fichier pdf par d’autre option

Oui, le fichier que je t’ai envoyé en dernier il fonctionne. Il faut juste modifier le chemin pour toi. Dommage que tu n’ai pas outlook

Et le répertoire ou est enregistré le pdf est celui-ci

C:\Users\langm\Documents\Archives MAIL AB\" & Nomdossier & "\"

et voici encore une fois le dernier fichier modèle qui fonctionne.
Rubis57 code envoi mail outlook 365.xlsm (19,4 Ko)

ceci fonctionne chez moi

Sub Envoi_Commande_par_mail_en_pdf()         'envoyer la commande par mail au boulanger

     'je déclare mes variables
     Dim Chemin As String, NomDossier
     Dim LaDate$, Fichier

     LaDate = Format(Now, "dd_mm_yyyy")
     NomDossier = "??? Nom Dossier ???"
     Chemin = "C:\Users\langm\Documents\Archives MAIL AB\" & NomDossier & "\"
     'Chemin = ThisWorkbook.Path & "\" 'chemin pour tester "cow18"

     Fichier = Chemin & "COMMANDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & LaDate & "  " & "envoyée" & ".pdf"
     MsgBox Fichier & vbLf & vbLf & "Vérifier si tout est correct ...", vbInformation, UCase("chemin et nom du pdf")
     Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier

     With CreateObject("Outlook.application").CreateItem(0)
          .Display
          .To = Sheets("MAIL AB").Range("C8").Value     'destinataire
          .Subject = "Bon de commande numéro: " & Range("C2").Value & " " & Range("D2").Value     'objet
          .Attachments.Add Fichier           'PJ
     End With

End Sub

COMMANDE_N°_ 2024 1056 POPOL 01_12_2024 envoyée.pdf (60,9 Ko)
Rubis57 code envoi mail outlook 365.xlsm (18,8 Ko)

"Et le répertoire ou est enregistré le pdf est celui-ci

C:\Users\langm\Documents\Archives MAIL AB\" & Nomdossier & "\"

"
Hélas toujours pareil c’est insuffisant car Nomdossier n’est pas défini !!!

Donc le répertoire en conséquence non plus

Si tu consultes le fichier pdf dans quel répertoire vas tu le chercher ???

Bonjour,

Si j’applique cela chez moi il me donne cette erreur

Le répertoire ou est enregistré le pdf se nomme " Archives MAIL AB "

Ensuite, " & Nomdossier & "" cela a toujours fait partie du code que j’ai pour envoyer des mails.
Si je l’enlève cela ne fonctionne plus.

Je ne peux pas dire autre chose

le chemin pour sauvegarder ce fichier n’existe pas, donc il y a quelque chose faux là-dedans.
Avec le contenu du msgbox, vous devez vérifier l’endroit de l’erreur.

"Le répertoire ou est enregistré le pdf se nomme " Archives MAIL AB «  »

Si le répertoire se nomme ainsi pourquoi cette définition de la variable Chemin :

Chemin = "C:\Users\langm\Documents\Archives MAIL AB\" & Nomdossier & "\"

la variable Nomdossier non défini donc nul ainsi que je te l’ai montré sur une copie d’écran est absolument inutile
Il faut mettre comme ceci :

Chemin = "C:\Users\langm\Documents\Archives MAIL AB\"

Sans Nomdossier qui ne sert à rien car sa présence indique un sous répertoire du répertoire Archives MAIL AB dans lequel le fichier pdf est enregistré

Effectivement dans cet esprit le code peux fonctionner donc mais surtout en supprimant cette incongruité qui porte à confusion dans la compréhension

Dur dur pour moi d’arriver à décortiquer la finalité de cette ligne de code

1 « J'aime »

dans ce fichier, on vérifie l’existance de votre chemin

Sub Envoi_Commande_par_mail_en_pdf()         'envoyer la commande par mail au boulanger

     'je déclare mes variables
     Dim Chemin As String, NomDossier
     Dim LaDate$, Fichier

     LaDate = Format(Now, "dd_mm_yyyy")
     NomDossier = "??? Nom Dossier ???"
     Chemin = "C:\Users\langm\Documents\Archives MAIL AB\" & NomDossier & "\"
     sp = Split(Chemin, "\")
     dir0 = CurDir
     On Error Resume Next
     For i = 0 To UBound(sp)
          s = s & sp(i) & "\"
          ChDir s
          If Err.Number <> 0 Then MsgBox "erreur avec " & vbLf & s, vbCritical: Exit For 'faute à partir de ce chemin
     Next
     On Error GoTo 0
     ChDir dir0
     'Chemin = ThisWorkbook.Path & "\" 'chemin pour tester "cow18"

     Fichier = Chemin & "COMMANDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & LaDate & "  " & "envoyée" & ".pdf"
     MsgBox Fichier & vbLf & vbLf & "Vérifier si tout est correct ...", vbInformation, UCase("chemin et nom du pdf")
     Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier

     With CreateObject("Outlook.application").CreateItem(0)
          .Display
          .To = Sheets("MAIL AB").Range("C8").Value     'destinataire
          .Subject = "Bon de commande numéro: " & Range("C2").Value & " " & Range("D2").Value     'objet
          .Attachments.Add Fichier           'PJ
     End With

End Sub

Rubis57 code envoi mail outlook 365.xlsm (18,6 Ko)

Je te fais souffrir FFO :speak_no_evil:

je viens d’enlever le & Nomdossier & "" et cela fonctionne !

je n’y comprends plus rien. Hier et encore ce matin cela n’allait pas ! Ou alors j’avais fais une erreur autre part.

En tout cas cela est top maintenant.

Merci beaucoup pour ton aide et ta patience.

Je ferai d’autre essais cet après midi et début de soirée je te donnerai le résultat.

Je te souhaite un bon appétit et A+

Rassures toi je ne t’en veux pas mais je me suis arraché les cheveux à décortiquer une variable Nomdossier qui finalement c’est avérée être une intruse inutile
De plus n’ayant pas Outlook de gérer le code de manière bancale sans pouvoir le tester de bout en bout pas simple d’en tirer la substantifique moelle
L’essentiel et d’avoir au final répondu à ton attente
Je suis ravis c’est ma récompense
N’oublies pas si tout est OK pour toi de valider ma dernière proposition un petit plus bien sympathique
Au plaisir pour la prochaine aventure

C’est fait. Mais je reviendrai en soirée te donner des nouvelles.
A+

Merci merci
J’attends donc de tes nouvelles

Re,
bon j’ai fais de multiples essais dans tous les sens et cela fonctionne très bien.

Je te dis Merci pour ton aide et a une prochaine certainement.

Bonne fin de week end.