Déclaration de variable

Coco-31

XLDnaute Junior
Bonjour le forum,

En parcourant les forums, j'ai trouvé ce code très intérêsant qui permet d'envoyer des feuilles Excel en format PDF.
Le problème est que ce code semble incomplet, si on déclare Option Explicit il se met en erreur, je pense qu'il y a un problème de déclaration de variable que je n'arrive pas à faire.
Si ce code inspire les experts du forum je les remercie pour l'aide qu'ils pourront m'apporter

Sub Mail()
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"

Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sujet du Message"
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = "xxxx.xxxxxxx@free.fr" 'Email du destinataire doit-être correct ici
objMessage.TextBody = "Bonjour," & vbCrLf & "Veuillez trouver en piéce jointe votre facture" & vbCrLf & "en votre aimable réglement"
piece_jointe = ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '& "Devis.pdf"
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update

objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe, il est possible d'envoyer plusieurs pièces
'objMessage.AddAttachment (piece_bis) 'dans ce cas on ajoute un objMessage.AddAttachement () par pièce
objMessage.Send
MsgBox "Le mail a été bien envoyé !" ', 64, "Information"
'après l'envoi la feuille PDF est supprimée
Kill ActiveWorkbook.Path & "\" & [B11] & [C13] & ".PDF" '"Devis.pdf"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
 

Coco-31

XLDnaute Junior
Re : Déclaration de variable

Bonjour,

Merci pour ta réponse, oui sans l'option explicit le code fonctionne ce qui m'oblige à le traiter seul dans un module;

Avec l'option explicit, le code s'arrête sur ce code
objMessage
et me dit variable non définie. J'ai essayé plusieurs déclarations sans succès.
Merci encore de ton aide
 

MJ13

XLDnaute Barbatruc
Re : Déclaration de variable

Re

Et bien supprime le, Option Explicit souvent, cela ne sert à rien :eek:.

Ou sinon ajoute:

Code:
Dim objMessage

Si tu connaît le type (object, string, double, variant...), c'est mieux de le rajouter.
 
Dernière édition:

Hippolite

XLDnaute Accro
Re : Déclaration de variable

Bonjour à tous,

Il me semble que "objMessage" et "piece_jointe" ne sont pas déclarés

Et bien supprime le, Option Explicit souvent, cela ne sert à rien
Je ne partage pas tout à fait cette opinion, mais à chacun ses habitudes.
On peut laisser les variables en variant par défaut, mais la déclaration est utile quand on écrit/modifie un code car ça met à l'abri d'une faute de frappe
Une déclaration complète conduit à plus de rigueur en ne laissant pas à Excel le soin d'interpréter et de convertir.
A+
 
Dernière édition:

Coco-31

XLDnaute Junior
Re : Déclaration de variable

Bonsoir,

merci pour vos réponses, qui m'ont mis sur la voie

si on utilise l'ontion explicit, il suffit de déclarer en fait deux variables

Dim objMessage
et
Dim piece_jointe

Encore merci

Cordialement
Coco
 

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 612
dernier inscrit
GLOIRE