Fenêtre Msgbox apparaitre 1 seule fois

BENAM69

XLDnaute Occasionnel
Bonjour à tous,

Actuellement, j'essaye de finaliser un outil mais je rencontre un problème sur le msgbox.
Je veux qu'il apparaisse une seule fois pour l'ensemble des conditions.

Je vous explique, quand mon userform1 se ferme, il va réaliser la macro ci dessous si et seulement si le optionbutton1 est cliqué et envoyer les mails selon les autres optionbuttons choisi (via la ligne de code AD = Choose ..... voir ci dessous).
Mais pour qu'il envoie, il y a un msgbox qui apparait, si la réponse est NON alors, il sort de la procédure. Si la réponse est OUI alors, il va envoyer les mails aux adresses sélectionnées. Mais le problème, c'est que la macro réalise la boucle pour envoyer un mail à toutes les adresses et à chaque fois la msgbox apparait autant de fois que le nombre d'adresse mail de personne choisie.
Je veux simplement que le msgbox apparait une fois et réalise l'envoi de mail à toutes les personnes choisies sans que le msgbox apparait 3 fois pour me demander si oui ou non je veux envoyer si j'ai décidé de choisir 3 personnes ou plus.

Voici le code :
VB:
Sub EnvoiMailS()
Dim MonOutlookS As Object, MonMessageS As Object, corpsS As String
Dim AD As String

If UserForm1.OptionButton1 = True Then
    For i = 6 To 18
        If UserForm1.Controls("OptionButton" & i) = True Then
         If MsgBox("Voulez-vous informer par mail ?", vbYesNo, "Demande de confirmation") = vbYes Then
            AD = Choose(i - 5, "adresse mail 1", "adresse mail 2", "etc...") 'ici tu listes les 13 adresses mail
            Set MonOutlookS = CreateObject("Outlook.Application")
            Set MonMessageS = MonOutlookS.createitem(0)
            MonMessageS.To = AD
            MonMessageS.Subject = "[ Morning Meeting ]" & " " & Date & " : Relevé de Problème Sécurité"
            corpsS = "Bonjour,"
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Indicateurs : " & UserForm1.ComboBox1.Value & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Remarques : " & UserForm1.TextBox1.Value & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Ce message est envoyé lors du Morning Meeting en date du " & Date & " à " & " " & Format(Now(), "hh:mm:ss")
            MonMessageS.body = corpsS
            MonMessageS.send
            Set MonOutlookS = Nothing
            Set MonMessageS = Nothing
            corpsS = ""
        Else
        Exit Sub
        End If
        End If
    Next i
End If
End Sub

Je vous remercie par avance pour votre aide.


Benam
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Salut,
peut être en le sortant de la boucle comme ceci mais sans aucune certitude ....
VB:
Sub EnvoiMailS()
Dim MonOutlookS As Object, MonMessageS As Object, corpsS As String
Dim AD As String

If UserForm1.OptionButton1 = True Then
    If  MsgBox("Voulez-vous informer par mail ?", vbYesNo, "Demande de confirmation") = vbYes Then
    For i = 6 To 18
        If UserForm1.Controls("OptionButton" & i) = True Then
            AD = Choose(i - 5, "adresse mail 1", "adresse mail 2", "etc...") 'ici tu listes les 13 adresses mail
            Set MonOutlookS = CreateObject("Outlook.Application")
            Set MonMessageS = MonOutlookS.createitem(0)
            MonMessageS.To = AD
            MonMessageS.Subject = "[ Morning Meeting ]" & " " & Date & " : Relevé de Problème Sécurité"
            corpsS = "Bonjour,"
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Indicateurs : " & UserForm1.ComboBox1.Value & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Remarques : " & UserForm1.TextBox1.Value & Chr(13) & Chr(10)
            corpsS = corpsS & Chr(13) & Chr(10)
            corpsS = corpsS & "Ce message est envoyé lors du Morning Meeting en date du " & Date & " à " & " " & Format(Now(), "hh:mm:ss")
            MonMessageS.body = corpsS
            MonMessageS.send
            Set MonOutlookS = Nothing
            Set MonMessageS = Nothing
            corpsS = ""
        Else
        Exit Sub
        End If
        End If
    Next i
End If
End Sub
 

BENAM69

XLDnaute Occasionnel
Salut Lolote83,

Non, cela ne fonctionne pas comme je le souhaite.
Il me faut mettre la condition de If UserForm1.Controls("OptionButton" & i) = True Then avant la condition du msgbox.
C'est ceci qui va déterminer si oui ou non le message msgbox apparait ou non pour lancer l'envoi des mails si la réponse est OUI.

Meme en utilisant ta méthode, les msgbox apparait plusieurs fois également.

Merci de ton retour,

Benam
 

Discussions similaires

  • Question
Microsoft 365 Excel VBA
Réponses
14
Affichages
559