Clé primaire sur excel

[Résolu/Fermé]
Signaler
Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015
-
 Fenouille -
Bonjour,

je travaille sur excel et je voudrais faire la même chose que sur access : dans une colonne, lorsque je remplis l'identifiant d'une personne, m'assurer que l'identifiant que je tape n'a pas déjà été tapé avant.
Est-ce possible avec du VBA sur Excel?



9 réponses

Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 200
Bonjour,

Oui, c'est possible mais cela peut se faire très facilement sans VBA...

si toutefois, cela va dans un code

if application.countif(range("A1:A100"),B2)>1 then
Msgbox "Doublon ou autre message"
end if

Michel
Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015

Bonjour Michel,

pourrais-tu m'expliquer dans le détail ta formule; je ne comprends que "A1:A100"
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
bonjour, bonjour Michel,
Petite rectification...
if application.countif(range("A1:A100"),B2)>0 then
Msgbox "Doublon ou autre message"
end if
Michel suppose ta liste existante dans la colonne A et le nouvel ID dans la cellule B2
A toi d'adapter suivant tes données.
A+
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 200
Bonjour,

Eh non, on cherche les doublons donc c'est bien >1
cordialement
Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015

Re,

je veux faire comme dans Access. Il ne peut donc y avoir de doublon à chercher au départ.
Je veux être juste sûr que si j'écris 40107 dans la cellule A452 où les 451 lignes précédentes sont déjà remplies et que 40107 se trouve par exemple déjà dans la cellule A159, un msgbox me le signale et m'empêche de le faire.
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
peut-être comme ça ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig As Long
Dim Cmp
    If Target.Column = 1 And Target.Count = 1 Then
        Cmp = Target
        For Lig = 1 To Target.Offset(-1).Row
            If Cells(Lig, 1) = Cmp Then
                MsgBox "c'est ID existe déjà à la ligne " & Lig
                Exit Sub
            End If
        Next Lig
    End If
End Sub

A coller dans le module de la feuille.
A+
Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015

merci lermitte, cela fonctionne.
Je voudrais maintenant supprimer ma saisie et revenir dessus pour recommencer.
J'ai mis cmp.delete mais cela ne fonctionne pas
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
    Target.ClearContents
    Target.select

Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015

non, cela ne fonctionne pas.
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
C'est que tu ne met pas à la bonne place..
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Lig As Long 
Dim Cmp 
    If Target.Column = 1 And Target.Count = 1 And Target <> "" Then 
        Cmp = Target 
        For Lig = 1 To Target.Offset(-1).Row 
            If Cells(Lig, 1) = Cmp Then 
                MsgBox "c'est ID existe déjà à la ligne " & Lig 
                Target.ClearContents 
                Target.Select 
                 
                Exit Sub 
            End If 
        Next Lig 
    End If 
End Sub 



Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Messages postés
64
Date d'inscription
mercredi 19 septembre 2012
Statut
Membre
Dernière intervention
17 mars 2015

Impeccable. Merci.
J'étais pourtant persuadé d'avoir mis ces deux lignes à cette place.
bonjour, mon problème se base surle même principe une clé primaire dans Excel:
N'aant pas Access au bureau je voudrais créer une formulaire dans Excel à partir un tableau qui se trouve sur une autre feuille.
J'aimerai simplement sélectionner une ligne de mon tableau et ainsi que les informations s'inscrive dans mon formulaire diectement.
Donc ma cellule A2 se retrouve en C3, A3 en D5 ect... Et en sélectionant ma ligne B tout mon formulaire se modifie....
Est-ce possible?
Si ou, comment?

PS : je suis nulle en Excel, alors ne soyez pas radin sur les détails de la procédure SVP...