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 Sub

Et le code du bouton avec lequel j'appelle la macro (ou j'essaye au moins) :

Private Sub CommandButton2_Click()

Call MailLotus
End Sub

Merci 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 Sub

Dans 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 Sub

Ensuite, vous pouvez appeler MailLotus sans paramètres, comme vous l'avez fait

Private Sub CommandButton2_Click()

Call MailLotus

End Sub

Assurez-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 ?

Oui vous pouvez, toutefois, ceci n'est pas aussi simple que d'envoyer le mail directement. Domino n'offre pas de moyen intégré d'afficher un draft de mail avant de l'envoyer.
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 Sub

Aprè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

Rechercher des sujets similaires à "appeler macro public sub bouton usf"