Clé primaire sur excel

Résolu
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
 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?



A voir également:

9 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
0
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Michel,

pourrais-tu m'expliquer dans le détail ta formule; je ne comprends que "A1:A100"
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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+
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Eh non, on cherche les doublons donc c'est bien >1
cordialement
0
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
    Target.ClearContents
    Target.select

0
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
non, cela ne fonctionne pas.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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.
0
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
Impeccable. Merci.
J'étais pourtant persuadé d'avoir mis ces deux lignes à cette place.
0
Fenouille
 
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...
0