Eviter la saisie de doublons

Je voudrais éviter de saisir une valeur existant déjà dans ma feuille. Comment faire ?

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 sub

Debra Dalgleish.

Auteurs : , , ,

Mots clefs associés à cette page : ,