Excel 2003 - VBA Clé primaire auto incrémentée

Bonjour,

Pourriez-vous m'aider à intégrer dans ce code ci-dessous une incrémentation numérique des lignes dans la colonne A avec l'impossibilité d'effacer les lignes incrémentées.

Par avance, je vous remercie

[code]Private Sub Worksheet_Change(ByVal Target As Range)

     Dim Cel As Range
     Dim derLig As Long
     Dim lignVide As Long
     Dim V1
     Dim V2
     Dim V3
     Dim V4
     Dim V5
     Dim V6

     If Target.Column <> 12 Then Exit Sub

     derLig = Range("A" & Rows.Count).End(xlUp).Row

     If Target.Row <> derLig Then Exit Sub

     If Target.Value = "RM" Then

         'il y a 6 valeurs à transférer
         V1 = Me.Cells(derLig, 1): V2 = Me.Cells(derLig, 2): V3 = Me.Cells(derLig, 4)
         V4 = Me.Cells(derLig, 8): V5 = Me.Cells(derLig, 9): V6 = Me.Cells(derLig, 11)

         ' Je teste les six variables, si au moins une est vide alors je définie la variable la_colonne
         ' avec la valeur de la dernière colonne vide, je le signale, j'efface la valeur "RM", je sélectionne la cellule vide et je quitte la macro
         If V1 = "" Then la_colonne = 1
         If V2 = "" Then la_colonne = 2
         If V3 = "" Then la_colonne = 4
         If V4 = "" Then la_colonne = 8
         If V5 = "" Then la_colonne = 9
         If V6 = "" Then la_colonne = 11

         If la_colonne > 0 Then
             msg = MsgBox("Une des valeurs n'est pas renseignée ! Veuillez vérifier, merci.", vbokoly)
             Target.Value = ""
             Me.Cells(derLig, la_colonne).Activate
             Exit Sub
         End If

         'Ouvrir la feuill GM
         With Worksheets("Gm")

             Set Cel = .Columns(1).Find(Me.Cells(derLig, 1), , xlValues, xlWhole)

             If Cel Is Nothing Then
             Sheets("GM").Activate

                .Unprotect Password:="afital"

                'Recherche de la première ligne vide
                lignVide = .Range("A" & .Rows.Count).End(xlUp).Row + 1

                'Copie des valeurs dans la feuille "GM"
                .Cells(lignVide, 1) = V1
                .Cells(lignVide, 2) = V3
                .Cells(lignVide, 4) = V6
                .Cells(lignVide, 5) = V2
                .Cells(lignVide, 8) = V4
               .Cells(lignVide, 9) = V5

                .Protect Password:="afital"

             Else

                 MsgBox "Enregistrement déjà existant dans la base de données GM !"

             End If

         End With

     End If

 End Sub

[/code]

Bonsoir,

Personnellement je ne comprend pas la question :

en effet sur votre première feuille il y a une validation de donnée dans la colonne A, afin d'éviter de donner deux valeurs identiques.

Lors de l'exécution de la macro, vous recopiez cette valeur... donc elle est, elle aussi, unique, non ?

@ bientôt

LouReeD

Nota : ci-joint le fichier modifié qui indique les colonnes vides avant copie !

28gb-lrd.xlsm (38.96 Ko)
Rechercher des sujets similaires à "2003 vba cle primaire auto incrementee"