Clé primaire sur excel

Résolu
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

  1. 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...
    1. Impeccable. Merci.
      J'étais pourtant persuadé d'avoir mis ces deux lignes à cette place.
      1. Contributeur
        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.
        1. Contributeur
              Target.ClearContents
              Target.select

          1. non, cela ne fonctionne pas.
        2. 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
          1. Contributeur
            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+
            1. Contributeur
              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+
              1. Contributeur
                Bonjour,

                Eh non, on cherche les doublons donc c'est bien >1
                cordialement
              2. 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.
            2. Bonjour Michel,

              pourrais-tu m'expliquer dans le détail ta formule; je ne comprends que "A1:A100"
              1. Contributeur
                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