Evenement et Formule Si
Bonjour
J'ai tapé le code ci après pour générer plusieurs événements.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then If Not (IsEmpty(Target.Value)) Then Range("c" & Target.Row).Value = Now Else Range("c" & Target.Row).ClearContents
If Target.Column = 14 Then If (Target.Value = 0) Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
End Sub
Pour la première partie
If Target.Column = 2 Then If Not (IsEmpty(Target.Value)) Then Range("c" & Target.Row).Value = Now Else Range("c" & Target.Row).ClearContents
celà fonctionnne en effet lorque je tape une valeur dans une cellule de la colonne B (colonne 2)alors la date du jour s'affiche dans la colonne C à coté de la cellule de la colonne B où j'ai sais une valeur.
Pour la seconde partie
If Target.Column = 14 Then If (Target.Value = 0) Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
je souhaiterai que lorsque la valeur d'une cellule de la colonne N (colonne 14) qui contient la formule =SI(NB.VIDE(B15:M15)>0;1;0)
passe à 0 car toute les lignes des colonnes précedentes sont remplies la date du jour s'affiche dans la colonne O.
Cela ne fonctionne que si je saisi moi même la valeur 0 dans la cellule.
Comment faire? Et pourquoi la première fonctionne et pas la seconde?
Merci à tous.
Romain
Bonjour rhelle et
Pour détecter la modification de valeur, tu utilises l’événement Change de la feuille.
Or, cet événement se produit lorsque les cellules de la feuille de calcul sont modifiées par l'utilisateur (ou par un lien externe) et non pas par une formule.
Voila qui explique pourquoi tu obtiens le résultat attendu avec la colonne B (saisie directe) et non avec la colonne N.
Par contre, tu peux peut-être détecter la modification qui va initier le changement de valeur dans la colonne N, à savoir la modification de la plage B15:M15 dans ton exemple.
A+
Bonjour et Merci pour ton idée
J'ai tapé ceci et celà fonctionne.
En gros j'ai vérifié qu'à chaque fois qu'une cellule est tapée dans la colonne de 2 à la colonne 13 que la cellule qui contient la formule qui vérifie le remplissage de toute la ligne que sa valeur était 0.
Ce n'est pas très élégant
mais ça marche
Merci encore
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then If Not (IsEmpty(Target.Value)) Then Range("c" & Target.Row).Value = Now Else Range("c" & Target.Row).ClearContents
If Target.Column = 2 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 3 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 4 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 5 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 6 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 7 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 8 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 9 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 10 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 11 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 12 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 13 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
End Sub
Bonjour et Merci pour ton idée
J'ai tapé ceci et celà fonctionne.
En gros j'ai vérifié qu'à chaque fois qu'une cellule est tapée dans la colonne de 2 à la colonne 13 que la cellule qui contient la formule qui vérifie le remplissage de toute la ligne que sa valeur était 0.
Ce n'est pas très élégant
mais ça marche
Merci encore
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then If Not (IsEmpty(Target.Value)) Then Range("c" & Target.Row).Value = Now Else Range("c" & Target.Row).ClearContents
If Target.Column = 2 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 3 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 4 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 5 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 6 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 7 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 8 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 9 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 10 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 11 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 12 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
If Target.Column = 13 Then If Range("n" & Target.Row).Value = 0 Then Range("o" & Target.Row).Value = Now Else Range("o" & Target.Row).ClearContents
End Sub