Re : pop up alerte VBA
re²,
Comme il s'agit d'une macro événementielle
Worksheet_Change(ByVal Target As Range), la macro se déclenche à chaque modification du contenu d'une cellule de la feuille concernée. Target représente donc la cellule qui vient d'être modifiée.
On ajoute en début de code, l'un ou l'autre test, pour préciser les conditions où les instructions doivent s'exécuter:
-
If Not Intersect(Target, [D25000]) Is Nothing vérifie que la cellule modifiée se situe bien dans la plage D2
5000
-
If Target.Count > 1 Then Exit Sub S'il y a plus d'une cellule modifiée, on "sort"
-
If Target = "" ... on quitte aussi la procédure, si on a effacé le contenu de la cellule
-
If Target.Row >= 4 Then ce qui suit ne sera exécuté que si la cellule modifiée se situe au-delà de la ligne 3 (dans ton dernier fichier, je dirais que '>=5' ou '>4' devrait mieux convenir!?)
Pour la suite,
Target.Offset(0, 1) permet de faire un "décalage" ... comme la cellule modifiée est en colonne D, l'écart figure lui, dans la cellule voisine. Si on décale de 0 ligne et 1 colonne, on "pointe" donc sur la cellule juste à droite.
Cells(4, Target.Column + 1) fait référence à une cellule en ligne 4 et dans la colonne à droite de la colonne D (E4, ici)