Appeler une macro Public Sub avec un bouton USF
Bonjour,
Je souhaiterais appeler une macro Public Sub qui m'envoie un mail sur Lotus grâce à un bouton d'un userform.
Cependant malgré des Call NomDeLaMacroPublicSub ou des Load je n'arrive pas à mes fins.
Auriez-vous des pistes ?
Voici le codes en question :
Public Sub MailLotus(ByVal MailDestinataire As String, ByVal Sujet As String, ByVal CorpsMessage As String, _
ByVal FichierJoint As String)
On Error GoTo Gerreur
'Dim session As Domino.NotesSession
Dim session As Object
Dim db As Object
Dim doc As Object
Dim attachme As Object
Dim EmbedObj As Object
Dim attachment() As String
Dim i As Integer
Set session = CreateObject("notes.notessession")
Set db = session.GETDATABASE("", "")
Call db.openmail
Set doc = db.createdocument
With doc
.form = "Memo"
.sendto = "arthur.amy@piveteau.com"
.Subject = "TEST"
.body = "ceci est un test"
.from = session.COMMONUSERNAME
.posteddate = Now
.SaveMessageOnSend = True
End With
Call doc.SEND(True)
Exit Sub
Gerreur:
MsgBox Err.Number & " : " & Err.Description, vbCritical, "Erreur"
End SubEt le code du bouton avec lequel j'appelle la macro (ou j'essaye au moins) :
Private Sub CommandButton2_Click()
Call MailLotus
End SubMerci d'avance
Bonjour Arthur,
Il semblerait que vous essayez d'appeler votre Sub MailLotus sans lui passer de paramètres, alors qu'elle est définie pour en attendre quatre. Ceci pourrait causer une erreur je pense.
Pour appeler MailLotus correctement, vous devez fournir les quatre arguments nécessaires :
Private Sub CommandButton2_Click()
Call MailLotus("destinataire@example.com", "Sujet du mail", "Corps du message", "Chemin/vers/le/fichier/joint")
End SubDans ce cas, remplacez "destinataire@example.com", "Sujet du mail", "Corps du message", et "Chemin/vers/le/fichier/joint" par les valeurs que vous souhaitez utiliser.
Si vous souhaitez que MailLotus envoie toujours le même mail, vous pouvez modifier MailLotus pour ne pas prendre de paramètres, et définir les valeurs à l'intérieur de MailLotus elle-même :
Public Sub MailLotus()
On Error GoTo Gerreur
'Dim session As Domino.NotesSession
Dim session As Object
Dim db As Object
Dim doc As Object
Dim attachme As Object
Dim EmbedObj As Object
Dim attachment() As String
Dim i As Integer
Dim MailDestinataire As String
Dim Sujet As String
Dim CorpsMessage As String
Dim FichierJoint As String
MailDestinataire = "destinataire@example.com"
Sujet = "Sujet du mail"
CorpsMessage = "Corps du message"
FichierJoint = "Chemin/vers/le/fichier/joint"
Set session = CreateObject("notes.notessession")
Set db = session.GETDATABASE("", "")
Call db.openmail
Set doc = db.createdocument
With doc
.form = "Memo"
.sendto = MailDestinataire
.Subject = Sujet
.body = CorpsMessage
.from = session.COMMONUSERNAME
.posteddate = Now
.SaveMessageOnSend = True
End With
Call doc.SEND(True)
Exit Sub
Gerreur:
MsgBox Err.Number & " : " & Err.Description, vbCritical, "Erreur"
End SubEnsuite, vous pouvez appeler MailLotus sans paramètres, comme vous l'avez fait
Private Sub CommandButton2_Click()
Call MailLotus
End SubAssurez-vous que votre environnement est correctement configuré pour utiliser le COM de Lotus Domino. J'espère que cela vous aidera !
Cela marche parfaitement !!
J'ai enlever les paramêtres d'entrée.
Sauriez-vous si il est possible d'ouvrir le mail avant de l'envoyer pour modifier le corps du message et pour vérifier les information avant envoie ?
Une possibilité consiste à enregistrer le document (le mail) sans l'envoyer, puis à l'ouvrir dans Notes. Vous pouvez le faire en utilisant
Call doc.Save( False, True ) pour enregistrer le mail, et Call session.URLOpen( doc.NotesURL ) pour l'ouvrir.Ceci ne fonctionnera que si votre script est en cours d'exécution dans l'application Lotus Notes elle-même, car
URLOpen ne peut ouvrir des documents que dans Notes. Un exemple avec le code modifié : Public Sub MailLotus()
On Error GoTo Gerreur
'Dim session As Domino.NotesSession
Dim session As Object
Dim db As Object
Dim doc As Object
Dim attachme As Object
Dim EmbedObj As Object
Dim attachment() As String
Dim i As Integer
Dim MailDestinataire As String
Dim Sujet As String
Dim CorpsMessage As String
Dim FichierJoint As String
MailDestinataire = "destinataire@example.com"
Sujet = "Sujet du mail"
CorpsMessage = "Corps du message"
FichierJoint = "Chemin/vers/le/fichier/joint"
Set session = CreateObject("notes.notessession")
Set db = session.GETDATABASE("", "")
Call db.openmail
Set doc = db.createdocument
With doc
.form = "Memo"
.sendto = MailDestinataire
.Subject = Sujet
.body = CorpsMessage
.from = session.COMMONUSERNAME
.posteddate = Now
.SaveMessageOnSend = False 'Changez ce message pour Faux afin qu’il ne soit pas envoyé immédiatement
End With
' Enregistrer le document sans l’envoyer
Call doc.Save( False, True )
' Ouvrez le document dans Notes
Call session.URLOpen( doc.NotesURL )
Exit Sub
Gerreur:
MsgBox Err.Number & " : " & Err.Description, vbCritical, "Erreur"
End SubAprès avoir vérifié et éventuellement modifié le mail dans Notes, vous pouvez l'envoyer manuellement. J'espère que cela vous aidera !
C'est super ! Parfaitement ce que je voulais faire !
Je résouds ce post.
Bonne journée