Envoyer email si case cochée
Bonjour
Je souhaiterais envoyer un email (avec un texte de plusieurs lignes- le même texte pour tous) à toutes les adresses mails où la checkbox est cochée.
Je m'explique:
Il s'agit d'un tableau, à chaque ligne il y a une case dans la colonne A, et une adresse email dans la colonne E.
Si je coche une ou plusieurs case, puis je clique sur un bouton de commande, je voudrais que cela génère un email Outlook avec un texte automatique de plusieurs lignes, avec dans l'adresse de destination l'email figurant en colonne E de la ligne où la case est cochée.
Chacun doit recevoir un email à part, c'est à dire que si plusieurs cases sont cochées, plusieurs email doivent être générés.
En ce qui concerne les checkbox, je précise qu'ils peuvent avoir un nom différent à chaque fois qu'ils sont effacés et re-créés, il faut donc ne pas se baser sur leur nom actuel car cela peut changer dans le futur... (si vous cliquez sur "remove checkboxex" toutes les cases vont être effacées, puis si vous cliquez sur "add" elles vont être re-créées à chaque ligne où la cellule de la colonne C n'est pas vide).
S'il y a une ligne de cochée mais aucun email n'existe en colonne E de cette même ligne, alors un message apparaîtra pour dire que l'email ne peut être envoyé.
Je joins un exemple du fichier..
Si par hasard quelqu'un a un peu de temps pour se pencher sur le problème et m'aider, j'apprécierai beaucoup!!
Bonjour,
Peut-être commencer par donner un classeur avec les colonnes aux bons emplacements
A à gauche en 1ère colonne, puis B, C, etc (au lieu de commencer par la fin en XFD)
Désolé, à l'origine le fichier n'était pas en caratères latins, et j'ai oublié de remettre le fichier de gauche à droite.
Je joins le fichier dans le sens européen
J'ai essayé de faire une macro, c'est vraiment un brouillon qui fonctionne partiellement:
Lorsqu'un email existe dans la colonne E, qu'un nom est écrit dans la colonne C (de la même ligne), et que la case est cochée (en colonne A), ca doit générer un email où l'adresse email et le sujet découlent des données de cette même ligne (où la case est cochée).
Ca marche une fois puis ça génère des emails en plusieurs exemplaires à chaque ligne...
J'ai appelé (Call) la fonction eMail à chaque "for each", donc je crois que le problème de la répétition est dû à cela...
Je ne sais pas vraiment comment arranger cela...
Voila le code (je joins aussi le fichier)
Merci de votre aide!!
Sub SEND()
For Each c In Sheets("Sheet1").CheckBoxes
If c.Value = 1 Then
Call eMail
End If
Next
End Sub
Sub eMail()
Dim lRow As Integer
Dim i As Integer
Dim toDate As Date
Dim toList As String
Dim eSubject As String
Dim eBody As String
Dim Sheets As Worksheet
Dim OutApp, OutMail As Object
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
lRow = Cells(Rows.Count, 5).End(xlUp).Row
For i = 6 To lRow
If (Cells(i, 3)) <> "" And (Cells(i, 5)) <> "" Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
toList = Cells(i, 5) 'gets the recipient from col E
eSubject = "Missing bank account information -" & " " & Cells(i, 3)
eBody = "At the attention of " & Cells(i, 3) & "," & vbNewLine & vbNewLine & _
"The following bank details are missing in our data" & vbNewLine & vbNewLine & _
"Please send us the missing bank details" & vbNewLine & vbNewLine & _
"Sincerely, " & vbNewLine & _
"Me "
On Error Resume Next
With OutMail
.To = toList
.CC = ""
.BCC = ""
.Subject = eSubject
.Body = eBody
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
Cells(i, 7) = Date + Time 'Marks the row as "email sent in Column G"
End If
Next i
ActiveWorkbook.Save
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub
Bonjour ericw,
j'ai utilisé le fichier que tu as joint dans le deuxième post, dans l'autre tu dois revoir le code qui crée les cases parce que certaines sont superposées, tu peux le vérifier en utilisant le code:
Sub test()
MsgBox ActiveSheet.CheckBoxes.Count
End SubIl faut lier chaque case à cocher avec les cellules situées dessous, voici le code adapté:
'Create checkbox based on dimension and coordinates data from variables
ActiveSheet.Checkboxes.Add(CLeft, CTop, CWidth, CHeight).Select
With Selection
.LinkedCell = Cells(cell, "A").Address '<<==== Ligne ajoutée
.Caption = " "
.Value = xlOff
.Display3DShading = False
End WithLe fait de cocher (ou de décocher) chaque case va renvoyer VRAI ou FAUX dans la cellule liée, tu peux définir la couleur blanche du texte dans ces cellules.
Pour l'envoi du mail suffit d’ajouter une condition à ton code
If Cells(i, 1) = True And Cells(i, 3) <> "" And Cells(i, 5) <> "" ThenUn exemple dans le fichier joint.
MERCI !!
tout fonctionne, en fait c'etait si simple a corriger et si bete