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 :
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 ?
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
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.
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
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