Compile error [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
20 septembre 2004
-
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
-
Bonjour à tous je me retouve bloquer avec un code de je
souhaite utiliser.

Compile error Invalid use of Me Keyword !

voici le code ou il bloque.

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory _
As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOWNORMAL = 1

Public Sub SendMail(Optional Address As String, _
Optional subject As String, Optional body As String, _
Optional cc As String, Optional bcc As String)

Dim strCommand As String

'Construction du message
'Sujet du message
If Len(subject) Then strCommand = "&subject=" & subject
'Corps du message
If Len(body) Then strCommand = strCommand & "&body=" & body
'Copie du message (adresse email attendue)
If Len(cc) Then strCommand = strCommand & "&cc=" & cc
'Copie cachée du message
If Len(bcc) Then strCommand = strCommand & "&bcc=" & bcc

'Ajout de l'adresse email à la ligne de commande
strCommand = "mailto:" & Address & strCommand

'Execution de la commande via l'API
Call ShellExecute(Me.hwnd, "open", strCommand, _
vbNullString, vbNullString, SW_SHOWNORMAL)

End Sub

J'ai trouver ce code sur Vbfrance, il permet d'ouvrir la messagerie
par default pour envoyer un mail.
Merci beaucoup pour votre aide.

3 réponses

Messages postés
8
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
20 septembre 2004

Bonjour crenaud76

Vraiment sympa d'avoir pu m'aider car ton code fonctionne à merveille.
Merci

A bientôt
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
25
Je suppose que cet extrait de code vient d'un moduel standard !
Or a la dernière ligne de code, dans ton Shellexecute(), tu utilise le mot-clé Me, qui ne peut être utilsier que dans un module-objet : Module d'une form ou module de classe ou d'un OCX.
En effet, Me représente l'instance de l'objet en question au moment de l'execution.
donc pour solutionner ton pb, place ce code dans le module d'une form. Comme tu veux le Handle d'un objet pour l'envoyer à ShellExecute, il te faut un objet form.
Si tu veux vraiment que ce code soit dans un module, remplace le Me.Hwnd par un Form1.Hwnd. Ou pour que ton code soit plus propre et portable, modifie la dcl de SendMail de cette façon :
Public Sub SendMail(Hwnd as Long, Optional Address As String, _
Optional subject As String, Optional body As String, _
Optional cc As String, Optional bcc As String)

et la ligne ShellExecute par ceci :
Call ShellExecute(Hwnd, "open", strCommand, _
vbNullString, vbNullString, SW_SHOWNORMAL)

Depuis le code d'une form, tu pourras alors l'appeler de la façon suivante :
SendMail ME.Hwnd ... avec les autres arguments après si tu veux

C'est OK ?

Christophe R.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Peux-tu dans ce cas valider la réponse de Christophe en cliquant sur le bouton 'Accepter la réponse'.
Cela permet aux autres de savoir qu'il n'est plus nécessaire de se creuser la tête, la solution est trouvée ...

Manu