Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Lili77

XLDnaute Nouveau
Bonjour

Dans le code ci-dessous, pourriez-vous me dire s'il est possible d'intégrer dans celui-ci que la colonne A s'incrémente automatiquement et n'est pas modifiable (clé primaire) ? Merci d'avance pour votre aide !

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…