Vérification ID unique

Fermé
Mamiche31 Messages postés 12 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 15 mai 2012 - 23 janv. 2012 à 14:11
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 25 janv. 2012 à 20:37
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 janv. 2012 à 16:46
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
Mamiche31 Messages postés 12 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 15 mai 2012
24 janv. 2012 à 12:18
Est ce que tu peux m'expliquer un petit peu stp ?

Et elle ne fonctionne pas, comment dois-je l'utiliser ?
Merci
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 janv. 2012 à 20:27
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 janv. 2012 à 20:37
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