Vérification ID unique

Bonjour a tous,

Je souhaite créer une macro qui permette de déterminer si un numéro est unique dans une colonne.
Par exemple, si sur la colonne C qui correspond a l'ID d'une tache, je tape un ID qui existe déjà, je souhaite être alerté et ne pas pouvoir mettre ce numéro (vu qu'il existe déjà). En revanche, si cet ID n'existe pas, je peux alors le saisir sans problème.

Merci :)

1 réponse

  1. Essaies :
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cel As Range
    
    If Intersect(Target, Columns("C")) Is Nothing Then Exit Sub
    If Target.Formula = "" Then Exit Sub
    Set cel = Columns("C").Find(Target.Value, after:=Range("C1"), _
      LookIn:=xlValues, lookat:=xlWhole)
    If cel.Address = Target.Address Then
      Set cel = Columns("C").Find(Target.Value, after:=cel, _
        LookIn:=xlValues, lookat:=xlWhole)
    End If
    If cel.Address = Target.Address Then Exit Sub
    MsgBox "ID existant déjà"
    Target.Formula = ""
    Target.Activate
    
    End Sub
    
    1. Est ce que tu peux m'expliquer un petit peu stp ?

      Et elle ne fonctionne pas, comment dois-je l'utiliser ?
      Merci
    2. Bonjour,

      Il suffit de copier le code ci-dessus dans le module de la feuille correspondante

      Copier /clic droit sur l'onglet / visualiser le code / coller
    3. Le même avec les explications :
      Option Explicit
      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim cel As Range
      
      'Si la cellule modifiée n'est pas en colonne C : terminé
      If Intersect(Target, Columns("C")) Is Nothing Then Exit Sub
      
      'Si la cellule modifiée est vide : termuné
      If Target.Formula = "" Then Exit Sub
      
      'Chercher dans la colonne C, la 1° cellule qui contient la même valeur
      Set cel = Columns("C").Find(Target.Value, after:=Range("C1"), _
        LookIn:=xlValues, lookat:=xlWhole)
        
      'Si la cellule trouvée est la même que celle modifiée ...
      If cel.Address = Target.Address Then
        '... chercher la cellule suivante contenant la même valeur
        Set cel = Columns("C").Find(Target.Value, after:=cel, _
          LookIn:=xlValues, lookat:=xlWhole)
      End If
      
      'Si la cellule trouvée est encore la même que celle modifiée : terminé
      If cel.Address = Target.Address Then Exit Sub
      
      'sinon c'est qu'il existe une cellule contenant la même valeur
      MsgBox "ID existant déjà"
      
      'dans ce cas effacer la valeur saisie et reselection la cellule
      Target.Formula = ""
      Target.Activate
      
      End Sub