Eviter la saisie de doublons
4 solutions :
macro événementielle
à coller dans le module de la feuille. (click droit sur l'onglet et visualiser le code ).
Private sub Worksheet_Change(ByVal Target As Range) If Target.Value = "" Then exit sub For Each cell In Intersect(UsedRange, Cells) If cell.Address <> Target.Address And cell.Value = Target.Value Then MsgBox "saisissez un autre numéro, celui-ci existe déjà" Target.Value = "" Target.Select Exit For End If Next cell end sub
Cette macro t'interdira d'inscrire deux fois le même numéro dans la feuille et l'effacera à chaque fois.
Frédéric Sigonneau sur un scénario de Sitting hoax Laurent D (de Marseille)
Mise en forme conditionnelle :
sélectionne toutes les cellules (cellule active A1)
format / mise en forme conditionnelle / la formule est /
=NB.SI($A:$A;A1)>1
/ Format / motif /rouge /ok / ok si tu tapes deux fois le même numéro, il deviendra tout rouge
J@C
Validation de données
Troisième solution : Si tu veux empêcher la saisie de doublons, utilise la validation de données plutôt que le formatage conditionnel...
Données / Validation / Options / Personnalisée
Formule : =NB.SI($A:$A;A1)=1
(si les données à saisir sont en colonne A)
Avec si nécessaire, un message d'alerte que tu pourras personnaliser sur l'onglet Alerte d'erreur.
ChrisV
Macro événementielle Bis
Cette procédure te propose 2 options : soit empêcher la saisie d'une valeur dans une cellule si cette même valeur existe déjà dans les lignes précédentes (de la même colonne) soit empêcher la saisie d'une valeur si elle est déjà présente n'importe où dans la même colonne. Mets en commentaire les lignes de code de l'option qui ne t'intéressent pas et modifie le numéro de la colonne à surveiller selon tes besoins. Le code est à copier/coller dans le module de la feuille de calcul où tu veux qu'il soit disponible.
Private sub Worksheet_Change(ByVal Target As Excel.Range)
'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then
' pour vérifier si la saisie n'existe pas déjà dans les lignes précédentes
' If Application.WorksheetFunction. _
' CountIf(Range(Cells(2, 1), _
' Cells(Target.Row, 1)), Target.Value) > 1 Then
' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then
MsgBox "Number has been used -- Try again"
Target.Value = ""
Target.Select
End If
End If
end subDebra Dalgleish.
Auteurs : Jacques Chaussard, Frédéric Sigonneau, Debra Dalgleish, ChrisV
Mots clefs associés à cette page : saisir, doublon
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
