Excel 2003 - VBA Clé primaire auto incrémentée
X
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 !