Salut Fab
Tiens je parlais de toi et de tes question dans un long post il y a pas longtemps...
Tu veux faire quoi ? Un message par cellule ? tu vas avoir encore plus les cheveux dressés sur la tête si je te fais une boucle sur ton module !
Car tel quel çà ne fonctionne que sur une Ligne et c'est normal... Maintenant avec une petite boucle çà va le faire, mais bonsoir le stress !!
Voilà ta macro munie d'une boucle :
Sub test()
Dim MyDate As Long
Dim i As Byte ' limite à 250
MyDate = Date
For i = 2 To 4 ' = Boucle pour couvrir de la Ligne 2 à la Ligne 4
If MyDate > Cells(i, 1).Value Then
MsgBox "rdv passé"
Else
If MyDate > Cells(i, 1).Value - Cells(i, 2).Value Or MyDate = Cells(i, 1).Value - Cells(i, 2).Value Then
MsgBox Cells(i, 3).Value & " " & "le" & " " & Cells(i, 1).Value
Else
MsgBox "pas de rdv"
End If
End If
Next i
End Sub
.....Mais bonsoir la souri va exploser à cliquer sur les messages... lol
Maintenant voici une maniière un peu plus élaborée... Avec Commentaires...
Tu peux la copier/coller dans un module sur ton classeur TestRappel.xls...
Sub TestPourFab()
Dim MyDate As Long 'Variable de Type Numérique Entier pour compter la valeur de tes dates
Dim i As Byte ' limite à 250
Dim MsgManque As String 'Variable de type chaine de caractères
Dim MsgAvenir As String
Dim RVManque As Boolean 'Variable de Type VRAI/FAUX (OUI/NON )
Dim RVAvenir As Boolean
RVManque = False 'Par défaut on dit que c'est faux
RVAvenir = False
MyDate = Date 'OK pour ta date du jour
For i = 2 To 4 ' = Boucle pour couvrir de la Ligne 2 à la Ligne 4
If MyDate > Cells(i, 1).Value Then 'on a intégré le i pour se déplacer dans les lignes
MsgManque = MsgManque + "rdv passé le : " & Cells(i, 1) & vbCrLf 'on fabrique le msg avec retour ligne (que tu connais)
RVManque = True 'on met la valeur à vrai puisque il y a au moins UN RV Manqué
End If
If Not MyDate > Cells(i, 1).Value Then 'si on ne remplis PAS la condition ci-dessus on fait ça :
If MyDate > Cells(i, 1).Value - Cells(i, 2).Value Or MyDate = Cells(i, 1).Value - Cells(i, 2).Value Then
MsgAvenir = MsgAvenir + Cells(i, 3).Value & " le " & Cells(i, 1).Value & vbCrLf
RVAvenir = True 'Idem pour RV à venir
End If
End If
Next i 'on repart sur la boucle pour le prochain i......
'A PARTIR DE LA C'EST LA GESTION D'UN MESSAGE UNIQUE
If RVManque = False And RVAvenir = False Then 'On test les OUI / NON
MsgBox "Pas de Rendez-Vous"
Exit Sub 'On sort de la sub
End If
If RVManque = True And RVAvenir = False Then
MsgBox "Rendez Vous Dépassés : " & vbCrLf & MsgManque, vbCritical, "ALORS FAB T'AS ZAPPE DES RENCARDS"
Exit Sub
End If
If RVManque = False And RVAvenir = True Then
MsgBox "Rendez Vous à Venir : " & vbCrLf & MsgAvenir, vbInformation, "RENDEZ VOUS A VENIR"
Exit Sub
End If
If RVManque = True And RVAvenir = True Then
MsgBox "Rendez Vous Dépassés : " & vbCrLf & MsgManque & _
"Rendez Vous à Venir : " & MsgAvenir, vbExclamation, "ATTENTION RENDEZ VOUS MANQUES ET A VENIR"
End If
End Sub
Ce n'est pas du tout la meilleurs méthoden c'est juste un exercice pour te faire comprendre...
Si tu suis, tu apprendras à jouer avec les varilable Boolean, et comment construire une String en boucle...
Bonne Nuit (et bonne découverte de ce genre de macros, qui sont les base de VBA...)
@+Thierry