Envoi mail a partir d'un planning
Bonjour à tous,
Je suis nouveau ici et dans le monde du VBA, j'essaye de m'y mettre pour me faciliter la vie sur des taches redondantes au boulot.
Seulement voilà, pour l'instant je ne me facilite pas grand chose. Ça fait un petit moment que je bloque sur le code que je voulais créer et je crois que je vais avoir besoin d'un peu d'aide.
C'est un code destiné a envoyer un mail sur Thunderbird à partir d'un planning d'utilisation de salles, aux utilisateurs, un mois avant leur venue.
Dans Workbook:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
With ws
If (DateDiff("m", Now, Cells(3, 3)) = 1) Then
If (Range("A1").Value = "0") Then
Call MailingAuto
Range("A1").Value = "1"
End If
End If
End With
Next ws
End SubOn vérifie la date sur la cellule C3 (lundi) et en faisant la différence avec la date du jour, on voit si ca fait un mois.
Puis on vérifie que les mails n'ont pas été déjà envoyés (pour éviter que les mails ne s'envoient 10 fois si son ouvre 10 fois le classeur) grace a un chiffre caché en haut à gauche sur la feuille (1 ou 0).
On appelle le code de mailing automatique et on mets la valeur du marqueur a 1 pour signifier que les mails ont été déjà envoyés et que la prochaine fois le programme n'aura pas a le faire.
Seulement le code ne fonctionne pas, une âme charitable pourrait me corriger?
Merci d'avance!
Bonjour UncleBens et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Concernant votre demande, je pense que ça ira mieux avec ce genre de code, sinon merci de joindre un fichier
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
If (DateDiff("m", Now, ws.Cells(3, 3)) = 1) Then
If ws.Range("A1").Value = 0 Then
Call MailingAuto
ws.Range("A1").Value = 1
End If
End If
Next ws
End SubMerci de votre participation
Cordialement
Bonjour BrunoM45,
Et merci beaucoup pour votre réponse.
C'est en effet bien mieux!
Si je peux me permettre une question de plus, j'aimerai vous demander si vous avez une idée pour un code qui puisse intégrer les différents hyperliens d'une feuille dans une variable avant de l'utiliser comme adresse mail?
Sub MailingAuto()
Dim thund As String
Dim email As String
Dim cc As String
Dim bcc As String
Dim subj As String
Dim body As String
email = AdresseMail
cc = "mon.adresse@organisation.fr"
bcc = ""
subj = Range("D16").Value
body = "Bonjour," & vbCrLf & "Ceci est un message automatique pour vous rappeler que ..." & vbCrLf & "Cordialement ,"
thund = "C:\Program Files\Mozilla Thunderbird\thunderbird.exe" & _
" -compose " & """" & _
"to='" & email & "'," & _
"cc='" & cc & "'," & _
"bcc='" & bcc & "'," & _
"subject='" & subj & "'," & _
"body='" & body & "'" & """"
Call Shell(thund, vbNormalFocus)
Application.Wait (Now + TimeValue("0:00:03"))
SendKeys "^{ENTER}", True
End SubIci j'aimerais faire une boucle pour trouver les adresses mail en hyperliens dans la feuille, envoyer le mail a cette adresse et continuer pour autant qu'il y ait d'autres adresses sur la feuille.
En vous remerciant par avance
Bonjour,
Une adresse mail dans une cellule est avant tout une donnée, pour moi il suffit de récupérer cette donnée
Si l'adresse mail est dans A1
email = Range("A1").ValueA+
Bien sur, mais il faut peut être que je détaille un peu plus mon fichier.
Je ne vais pas le poster car il contient des infos personnelles alors je vais vous le décrire.
C'est un planning d'utilisation de salles dans lequel une feuille représente une semaine, elle comporte en gros 5 colonnes doubles (matin et après-midi) pour chaque jour de la semaine.
Quand une salle va être occupée, je remplis les cases avec notamment le nom des utilisateurs et en hyperlien leur adresse mail pour pouvoir les contacter facilement par la suite.
L'occupation des salles dépend des semaines, parfois on fait le plein, parfois il n'y a personne, etc.
Le remplissage du calendrier est donc "aléatoire" et j'aimerais que le programme aille chercher les adresses mail s'il y en a et envoie un mail automatique a la personne.
Sachant qu'il y a souvent plusieurs utilisateurs sur une même semaine j'aurais aimé mettre ça dans une boucle pour répéter le processus pour chaque utilisateur.
Merci encore pour le temps que vous prenez a me répondre!