Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIf Target.Adress = ActiveCell Then
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row > 1 Then If WorksheetFunction.CountIf(Range("A1:" & "A" & Target.Row - 1), Target.Value) > 0 Then MsgBox "valeur déja saisie" Target.Value = "" End If End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) ' 1ère boucle If pour definir les cellules d'une colonne donnée concernées par le changement (la saisie) If Target.Column = 4 And Target.Row > 1 Then '2ème boucle If imbriquée, son 1er agr defini la plage de cellules concernées par la comparaison, son 2eme arg defini le critère de comparaison If WorksheetFunction.CountIf(Range("D4:" & "D" & Target.Row - 1), Target.Value) <> 0 Then 'actions du If: afficher popup + effacer le contenu de la cellule target MsgBox "valeur déja saisie" Target.Value = "" End If End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) ' 1ère boucle If pour definir les cellules d'une colonne donnée concernées par le changement (la saisie) If Target.Column = 4 And Target.Row > 1 Then '2ème boucle If imbriquée, son 1er agr defini la plage de cellules concernées par la comparaison, son 2eme arg defini le critère de comparaison If WorksheetFunction.CountIf(Range("D4:" & "D" & Target.Row), Target.Value) > 0 Then 'actions du If: afficher popup + effacer le contenu de la cellule target MsgBox "valeur déja saisie" Target.Value = "" End If End If End Sub
je souhaite faire une macro qui detecte sur la cellule active si la valeur entrée (alphanumérique) existe déja dans les cellules de dessus
If Target.Column = 4 And Target.Row > 1 Then
Private Sub Worksheet_Change(ByVal Target As Range) ' première expression conditionnelle (pas "boucle" !) If Target.Column = 4 And Target.Row > 4 Then ' si l'on est en colonne D et au dessous de la ligne 4 '2ème expression conditionnelle (pas "boucle") : si ce qu'on vient de saisir est au-dessus dans la même colonne If WorksheetFunction.CountIf(Range("D4:" & "D" & Target.Row - 1), Target.Value) > 0 Then 'on envoie un message et on efface ce que l'on vuent de saisir MsgBox "valeur déja saisie" Target.Value = "" End If End If End Sub
Est-ce si dur à comprendre ?