Incrémentation automatique de ligne
Bonsoir à tous,
Je vous explique un peu mon tableau, il s'agit d'une liste déroulante de chiffres allant de 1 à 4, quand je sélectionne un chiffre il va automatiquement cherchés les informations liés à ce chiffre.
Je suis bloqué sur la tâche suivante, je possède une liste déroulante de chiffres (allant de 1 à 4) cellule B36.
J'ai réussi à faire que quand je sélectionne un chiffre de ma liste déroulante, il me créer automatiquement une nouvelle ligne avec à disposition toujours cette liste déroulante. Le problème, c'est que si je choisis une valeur de cette nouvelle liste déroulante cellule B37, il ne me créer plus de nouvelles ligne, car ma variable est toujours à 36 malgré que j'ai fais variable = variable + 1.
Autre petit soucis, quand mon code créer la nouvelle ligne automatiquement, sur cette nouvelle ligne si je chosis un chiffre de ma liste déroulante, il ne va plus cherchés les informations car il n'y a plus les formules sur les autres cases de la ligne 37. Il faudrait que quand sa créer une nouvelle ligne, les formules soient également attribués sur les cellules de la nouvelle ligne.
J'ai actuellement ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim variable As Integer
variable = 36
If Target.Row <> variable Then Exit Sub
If Len(Target) = 0 Then Exit Sub
With Target
.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.EntireRow.Copy
.Offset(1).EntireRow.PasteSpecial xlPasteFormats
variable = variable + 1
End With
Application.CutCopyMode = False
Target.Select
End Sub
Vous pouvez également trouver mon fichier en pièce jointe
Merci d'avance :)
Hello,
A chaque fois qu'il y a un "change", tu dis que variable = 36 donc ton variable +1 ne sert à rien.
Tu ne peux pas plutôt déterminer la dernière ligne dynamiquement ?
Exemple : variable = Activesheet.Range("A" & Rows.Count).End(xlup).row
@+
Salut Baroute, merci pour ta réponse, en gros je déclare ma variable de cette manière ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim variable As Integer
variable = Activesheet.Range("A" & Rows.Count).End(xlup).row
If Target.Row <> variable Then Exit Sub
If Len(Target) = 0 Then Exit Sub
With Target
.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.EntireRow.Copy
.Offset(1).EntireRow.PasteSpecial xlPasteFormats
variable = variable + 1
End With
Application.CutCopyMode = False
Target.Select
End Sub
Hello
Private Sub Worksheet_Change(ByVal Target As Range)
Dim variable As Integer
variable = Activesheet.Range("A" & Rows.Count).End(xlup).row
If Target.Row <> variable Then Exit Sub
If Len(Target) = 0 Then Exit Sub
With Target
.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.EntireRow.Copy
.Offset(1).EntireRow.PasteSpecial xlPasteFormats
variable = variable + 1 'Cette ligne ne sert à rien car ta variable "variable" est déterminée dynamiquement au début de ton code à chaque fois donc à supprimer
End With
Application.CutCopyMode = False
Target.Select
End SubJe t'ai mis un commentaire dans le code
Généralement tu incrémentes quand tu es dans une boucle. La tu fais une seule instruction sur une ligne
N'hésite pas si besoin
@+