Compile error

Résolu
mxcz Messages postés 8 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004 - 20 sept. 2004 à 17:56
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 - 20 sept. 2004 à 20:59
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

mxcz Messages postés 8 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004
20 sept. 2004 à 19:38
Bonjour crenaud76

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

A bientôt
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
20 sept. 2004 à 18:58
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.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
20 sept. 2004 à 20:59
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
0
Rejoignez-nous