Macro, UserForm et Outlook
Bonjour, j'ai crée un UserForm et j'ai un problème..
il est composé de 10 checkBox et de 10 label qui informe qui ont choisit, et d'un bouton.
Le but de cet UserForm est que quand on coche le CheckBox ça enregistre l'adresse mail de la personne concerné..on peut en cocher plusieurs, voir toutes. Lorsque l'on clique sur le bouton on ouvre Outlook et en destinataire on à la référence à TOUTES les personnes sélectionnées.Voici mon code:
Private Sub CheckBox1_Click() 'fait référence aux responsables A,B...J
Dim Adresse As String
Adresse = "jean.paul@xxxx.fr;"
....???.. 'ne sait pas comment compléter
End Sub 'idem pour les 9 autres, je ne sais pas comment les sauvés
Private Sub CommandButton1_Click()
Dim objOutlook: Dim objNewMessage
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.application")
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.application")
End If
On Error GoTo 0
Set objNewMessage = objOutlook.CreateItem(OlMailItem)
objNewMessage.Display
objNewMessage.Subject = "sujet"
objNewMessage.HTMLBody = "<BODY><B><SPAN STYLE='front-size:10mm'>Resultats: </SPAN></B></BODY>"
objNewMessage.To = "xxxxx.xxxx@xxxxxx.fr" 'mettre ici la totalité des adresses sélectionnés
objNewMessage.Save
objNewMessage.send
End SubMon code pour le bouton fonctionne mais je ne sais pas comment sauver toutes les adresses mails et les mètrent ensuite dans destinataires.
Vous avez des idées ?
Merci
Bonsoir,
Il est préférable de boucler sur tes cases à cocher et de récupérer l'adresse de celles qui sont cochées. Avec l'exemple que je te donne, les adresses sont dans les Captions des case à cocher sans le point virgule (il est ajouté par la suite), si ce n'est pas le cas, dis moi où sont les adresses :
Private Sub CommandButton1_Click()
Dim objOutlook
Dim objNewMessage
Dim Adresse As String
Dim Ctrl As Control
'boucle sur les contrôles à la recherche
'de ceux qui sont cochés
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CheckBox" Then
If Ctrl.Value = True Then
'ici, le texte des cases à cocher
'contient l'adresse E mail (jean.paul@xxxx.fr)
'sans le point virgule qui est rajouté après
Adresse = Adresse & Ctrl.Caption & ";"
End If
End If
Next
'si aucun choix de fait il ne sert
'à rien de lancer Outlook
If Adresse <> "" Then
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.application")
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.application")
End If
On Error GoTo 0
Set objNewMessage = objOutlook.CreateItem(OlMailItem)
With objNewMessage
.Display
.Subject = "sujet"
.HTMLBody = "<BODY><B><SPAN STYLE='front-size:10mm'>Resultats: </SPAN></B></BODY>"
.To = Adresse
.Save
.send
End With
End If
Set Ctrl = Nothing
End SubHervé.
Bonjour,
Merci Theze j'ai testé ton code et les adresses étaient bien dans Caption. J'ai rajouté un bouton "sélectionner tout" en supprimant la fonction If imbriquée dans l'autre..ça marche !!!
Je voudrais rajouter: si on choisit de prévenir "PARTIE A" (réf a CheckBox1 et ainsi de suite...), en plus d'ajouter son adresse mail dans "à..." (destinataire) quand on le coche; que cela rajoute automatiquement l'adresse mail de "CHEF PARTIE A" dans "Cc..." (copie cachée). Est ce possible ?
PB: il est également chef de A, B et C, donc si je coche ces 3 il ne dois apparaitre qu'une seule fois!!
Il faudrait rajouté l'adresse mail du chef par exemple dans le ControlSource de la case à cochée et que le programme ne le mettent qu'une seule fois. (Et de même pour les autres chefs..)
Merci.