Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
C'est une boucle sur la colonne B, si la date -3 = aujourd'hui alors un message apparait avec la description colonne A. Il peut donc avoir plusieurs messages, si plusieurs cellule ont la date -3 = aujourd'hui
@shinozak , même si ton code fonctionne, il contient deux bugs sous jacents
commencer ta recherche de dernière ligne en A4 bouclera sur 1048575 lignes inutilement si la dernière donnée est en A3
également, comme tu utilises xldown, toute cellule vide en colonne A limitera la boucle à la ligne précédente
(peut être pas gênant dans ce tableau spécifique mais ce n'est pas la meilleure méthode à utiliser de façon générique et re utilisable) pour éviter cela on utilise toujours xlup en partant de la dernière cellule de la feuille.
pour la suite, plutôt des optimisations
il est toujours mieux de déclarer ses variables
utiliser x pour le msgbox ne sert à rien dans ce code puisqu'il n'y a pas besoin de récupérer une réponse utilisateur
instancier ta valeur de ligne max sera toujours plus rapide que de l'évaluer à chaque instance de la boucle
un with/end with sur la feuille sera plus pratique et plus lisible.
Bien cordialement, @+
VB:
Private Sub Workbook_Open()
Dim x&, k&
With Sheets("Feuil1")
x = .Range("A" & .Rows.Count).End(xlUp).Row
For k = 2 To x
If .Range("B" & k) - 3 = Date Then MsgBox "Attention il vous reste jusqu'au " & Format(.Range("B" & k), "dddd dd mmmm yyyy") & " pour faire " & .Range("A" & k), vbOKOnly + vbInformation
Next
End With
End Sub
sur un grand nombre de données, il sera plus rapide d'utiliser un tableau VB que d'évaluer chaque cellule.
VB:
Private Sub Workbook_Open()
Dim x&, k&, Range_Ref
With Sheets("Feuil1")
Range_Ref = .Range("A2:B" & .Range("A" & .Rows.Count).End(xlUp).Row).Value
End With
x = UBound(Range_Ref, 1)
For k = 2 To x
If Range_Ref(k, 2) - 3 = Date Then MsgBox "Attention il vous reste jusqu'au " & Format(Range_Ref(k, 2), "dddd dd mmmm yyyy") & " pour faire " & Range_Ref(k, 1), vbOKOnly + vbInformation
Next
Range_Ref = Null
End Sub
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.