Problème code envoi mail

Bonjour à toutes et à tous,

j’ai un soucis avec le code pour envoyer le mail.

Je précise, que avant j’étais en Office365 alors que maintenant en Office 2016.

Dans le fichier modèle ci joint j’ai placé le code comme il est dans le fichier réel. Certaines lignes sont cochées afin de ne pas réagir.

En espérant que vous pouvez m’aider sur ce problème.
Je place des captures écrans des étapes qu’il me donne lorsque je clique sur le bouton pour envoyer ce mail.



et au niveau du code il marque cette ligne

Merci d’avance à vous.

Rubis57
Rubis57 VBA mail.xlsm (17,1 Ko)

Bonjour Rubis
Je n’ai pas Outlook donc ne peux tester
Mais dans ma besace VBA d’instructions pour cette application à ce niveau j’ai ces lignes :

Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)

Peut être toi de mettre :

Set olApp = New Outlook.Application
Set M = olApp.CreateItem(olAppMailItem)

A essayer
Je ne peux faire mieux en absence de cet outil mais j’ai plusieurs fois proposé cette procédure avec succès
Espérons pour toi de récidiver
Je croise les doigts

Bonjour FFO,

Merci d’avoir répondu.

J’ai essayé avec tes lignes mais cela ne donne rien. Comme tu peux voir sur l’image il me donne encore une erreur.

Erreur

As tu essayé de regarder la liste des références si celle d’Outlook est cochée
Peut-être du mieux
A essayer

Oui ça l’est.
Object Library

Est ce que je devrai désinstaller et réinstaller Outlook ?

pouvez-vous manuellement (sans VBA et excel) envoyer un mail ?

As tu vérifié dans la liste des références si pour Outlook plusieurs d’entre elles étaient existantes auquel cas c’est la version la plus récente qui doit être cochée
Ton application Outlook est elle ouverte à l’exécution de la procédure ?
Dans la negative essaies ainsi peut-être du mieux
Sinon avec un autre PC munis d’Outlook faire un essai
Celà fonctionne pb au niveau de ton ordinateur actuel
Cela ne fonctionne pas mieux pb au niveau du fichier voir d’en concevoir un autre en espérant plus de succès

Bonsoir,

alors après de multiples essais j’ai désinstallé OFFICE et installer OFFICE 365.

J’ai modifier certains points et j’ai réussi à part un point qui me donne une erreur.

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

'je déclare mes variables
Dim Chemin As String
Dim olApp As Object
Dim M As Object
Dim Destinataire As String
Dim Nom As String
Dim Objet As String
Dim LaDate$

LaDate = Format(Now, "dd_mm_yyyy")

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

Nom = ActiveSheet.Name & ".pdf"
Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & LaDate & "  " & "envoyée" & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(0)

Destinataire = Range("C8")
Objet = "Bon cde numéro: " & Range("C2") & " " & Range("D2")
With M
.To = Destinataire
.Subject = Objet
'.Attachments.Add Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf"
.Display
    
End With

End Sub

La ligne ci-dessous me donne une erreur

'.Attachments.Add Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf"

nomDossier=«  » ??? je le vois nulle part

il doit être ou s’il te plaît ?

je m’excuse, un moment, vous avez « LaDate » pour créer le pdf et sans « LaDate » pour l’attachment, je suppose

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

     'je déclare mes variables
     Dim Chemin As String
     Dim olApp As Object
     Dim M     As Object
     Dim Destinataire As String
     Dim Nom   As String
     Dim Objet As String
     Dim LaDate$, Fichier

     LaDate = Format(Now, "dd_mm_yyyy")

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

     Nom = ActiveSheet.Name & ".pdf"
     Fichier = Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & LaDate & "  " & "envoyée" & ".pdf"
     
     Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier, Quality:=xlQualityStandard, _
                                           IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                                           False

     Set olApp = CreateObject("Outlook.application")
     Set M = olApp.CreateItem(0)

     Destinataire = Range("C8")
     Objet = "Bon cde numéro: " & Range("C2") & " " & Range("D2")
     With M
          .To = Destinataire
          .Subject = Objet
          .Attachments.Add Fichier
          .Display

     End With

End Sub

il me donne encore cette erreur

erreur C

Je remarque une anomalie dans ton code

Le point de blocage fait appel à une variable Fichier qui lui même fait appel à la variable Chemin cette dernière à la variable Nomdossier non defini en amont de cette procédure
Normal que cette ligne d’instruction bloque compte tenu de cette dernière variable non défini dans le code

A voir celle-ci pour lui donner la valeur adaptée ce qui je pense devrait résoudre ce blocage
Je pense que l’export du fichier pdf dépendant de ces mêmes variables ne dois pas être effectué

Bonjour FFO,

je ne comprends pas bien ta dernière explication.
Quand tu dis que le l’export du fichier pdf ne doit pas être effectué, mais cela est fait pour sauvegarder ce document envoyé par mail.

Merci pour ton retour
A+

Ta variable Nomdossier utilisée sur cette ligne de code :

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

en toute fin doit être defini pour que celle de Chemin qui l’utilise soit opérationnelle

Ce n’est pas le cas d’où ta déconvenue et aussi je pense l’export du fichier pdf qui s’en appuie dessus lui aussi via sa variable utilisée Fichier :

Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier, Quality:=xlQualityStandard, _
                                           IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
                                           False

Filename:=Fichier

défini sur cette ligne en amont :

Fichier = Chemin & "CDE_N°_" & " " & Range("C2").Value & " " & Range("D2").Value & " " & Range("C5").Value & " " & LaDate & " " & "envoyée" & ".pdf"

qui utilise celle de Nomdossier sur cette ligne de code :

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

qui elle ne l’est pas :

Archives MAIL AB" & Nomdossier & ""`

Nomdossier

Toutes ces lignes de code on besoin de sa définition pour être opérationnelles

Pas d’autre choix

Re,

Merci pour toutes ces infos, mais peux tu me dire ou placé ces changements s’il te plaît.

J’ai déjà coché les lignes les lignes pour l’export. Est ce correct ?

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

'je déclare mes variables
Dim Chemin As String
Dim olApp As Object
Dim M As Object
Dim Destinataire As String
Dim Nom As String
Dim Objet As String
'Dim LaDate$

'LaDate = Format(Now, "dd_mm_yyyy")

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

'Nom = ActiveSheet.Name & ".pdf"
'Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
'Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & LaDate & "  " & "envoyée" & ".pdf", 'Quality:=xlQualityStandard, _
'IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
'False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(0)

Destinataire = Range("C8")
Objet = "Bon cde numéro: " & Range("C2") & " " & Range("D2")
With M
.To = Destinataire
.Subject = Objet
'.Attachments.Add Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf"
.Display
    
End With

End Sub

Re,

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 !

Voici son code

Sub envoi_info_panne_par_mail_en_pdf() 'envoyer commande par mail  au fournisseur

'je déclare mes variables
Dim Chemin As String
Dim olApp As Object
Dim M As Object
Dim Destinataire As String
Dim Nom As String
Dim Objet As String

Chemin = "C:\Users\langm\Music\Excel\Archives PANNES\" & Nomdossier & "\"

Nom = ActiveSheet.Name & ".pdf"
Sheets("PANNE").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "PANNE_" & Range("F5") & " " & Range("E12") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(0)
Destinataire = Sheets("PANNE").Range("B11")
Objet = "DEMANDE INTERVENTION POUR PANNE"
With M
.To = Destinataire
.Subject = Objet
.Attachments.Add Chemin & "PANNE_" & Range("F5") & " " & Range("E12") & ".pdf"
.Display
    
End With

End Sub

j’ai trouvé

j’ai recopier la ligne ci-dessous à la suite de Attachments et cela fonctionne

"CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf"
Sub Envoi_par_mail() 'envoyer la commande par mail au boulanger

'je déclare mes variables
Dim Chemin As String
Dim olApp As Object
Dim M As Object
Dim Destinataire As String
Dim Nom As String
Dim Objet As String

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

Nom = ActiveSheet.Name & ".pdf"
Sheets("MAIL AB").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf", 'Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(0)

Destinataire = Range("C8")
Objet = "Bon cde numéro: " & Range("C2") & " " & Range("D2")
With M
.To = Destinataire
.Subject = Objet
.Attachments.Add Chemin & "CDE_N°_" & " " & Range("C2").Value & "  " & Range("D2").Value & "   " & Range("C5").Value & "  " & "envoyée" & ".pdf"
    
End With

End Sub

Peux me transmettre ce fichier en me spécifiant l’onglet qui fonctionne et celui qui ne fonctionne pas

Merci

Re,

voila je t’ai fais un modèle avec le code qui fonctionne. Il faudra juste modifier ton chemin

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

Dis moi si ok pour toi, c’est toi l’expert
Rubis57 code envoi mail outlook 365.xlsm (19,4 Ko)