Vérification ID unique

Mamiche31 Messages postés 13 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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
    
    0
    1. Mamiche31 Messages postés 13 Statut Membre
       
      Est ce que tu peux m'expliquer un petit peu stp ?

      Et elle ne fonctionne pas, comment dois-je l'utiliser ?
      Merci
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      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
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      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
      
      0