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

Rechercher des sujets similaires à "evenement formule"