Macro "date atteinte"
Bonjour,
J'ai réussi à écrire une macro qui check toute une colonne de dates et affiche un message si une des date est - par exemple - 15 jours avant une date, et qui ne fait rien autrement.
Mais j'aimerai que dans ce second cas, un message s'affiche pour dire que tout est bon en gros, mais un seul message, j'ai réussi à avoir un message par date, mais si la colonne contient 450 dates par exemple mdr, j'ai pas envie d'avoir 450 fois le message "OK".
Merci d'avance, j'imagine que ça doit pas être bien dur, mais comme je débute, je vois pas trop comment faire.
Bonjour,
Pas sûr d'avoir tous compris !!
une possibilité que je ne sais pas incorporé dans le code déjà existant.....
je suppose qu'il y a une boucle (?)
début de boucle
if date = -15jours then compteur=compteur +1
fin de boucle
if compteur > 0 then
msgbox "il y a " & compteur & " anomalies"
else
msgbox "Aucune anomalie"
end if
A+
Comme c'est toujours gentil d'avoir un retour, je reviens répondre.
Désolé j'avais écrit un peu vite avant de partir donc ce n'est pas forcément clair, mais oui grâce à ta réponse j'ai réussi à obtenir ce que je voulais.
Par contre pour l'instant je ne comprends pas pourquoi ça fonctionne, donc je vais essayer de comprendre ça.
Voici le code (la macro s'appelle "envoi mail" car à la base je voulais faire autre chose lol) :
Sub Envoidu_Mail_Outlook()
Dim cel As Range
Dim compteur As Integer
compteur = 0
For Each cel In Range("B1:B" & Range("B1").End(xlDown).Row)
If cel = Date + 15 Then
MsgBox "Due date du " & cel.Offset(0, -1) & " bientôt atteinte !"
compteur = 0
GoTo finboucle
Else
compteur = compteur + 1
End If
Next cel
finboucle:
If compteur > 0 Then
MsgBox "OK"
Else
End If
End Sub
D'ailleurs j'ai maintenant un autre souci, c'est que si une date dans la colonne répond à la condition (c'est-à-dire si elle est dans 15 jours), alors le bon message s'affiche, ça c'est nickel, par contre le contrôle de la colonne s'arrête, moi je voudrais qu'il continue.
déplacer l'étiquette finboucle: juste avant Next cel
Merci pour les conseils, j'ai finalement trouvé un moyen sans utiliser de "goto" ni "label" parce que c'est merdique lol.
Et j'ai à nouveau modifier le code pour un envoi de mail, par contre, en l'état actuel, Outlook doit être ouvert, ou alors la macro va l'ouvrir, MAIS : existe-t-il un moyen pour que le mail soit envoyé en "arrière-plan", je veux dire par là, sans que Outlook ne soit ouvert.
J'ai trouvé beaucoup de code sur le net qui mettait un ".Send" au lieu de "Application.SendKeys "%s" mais ça ne fonctionne pas .
Sub Envoidu_Mail_Outlook()
Dim OutApp As Object
Dim OutMail As Object
Dim cel As Range
Dim compteur As Integer
Dim compteurB As Integer
compteur = 0
compteurB = 0
For Each cel In Range("B1:B" & Range("B1").End(xlDown).Row)
If cel = Date + 15 Then
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Shell "OUTLOOK.EXE", vbMaximizedFocus
With OutMail
.To = cel.Offset(0, 1)
.Subject = "DD " & cel.Offset(0, -1) & " " & ": " & Date
.Body = "Due date atteinte"
.display
.Save
Application.SendKeys "%s"
End With
compteurB = compteurB + 1
Else
compteur = compteur + 1
End If
Next cel
If compteurB = 0 Then
If compteur = 0 Then
Else
MsgBox "Aucune due date proche"
End If
Else
End If
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Merci d'avance pour vos réponses.