1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Sub test()
Dim DerLig As Long
With ThisWorkbook.ActiveSheet
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
End With
Dim DerLigcata As Long
With ThisWorkbook.Feuil1
DerLigcata = .Range("A" & Rows.Count).End(xlUp).Row
End With
If DerLig > DerLigcata Then
Dim Ligne As Integer
Dim Colonne As Integer
'La variable Insertion est là pour empêcher la macro de tourner à l'infini
'En effet, quand on modifie une cellule, la macro insère une ligne
'Excel interprète cette insertion comme une modification de cellule
'donc il réinsère une autre ligne, etc, etc...
Static Insertion As Boolean
'Enregistre la ligne et la colonne de la cellule modifiée
Ligne = Target.Row
Colonne = Target.Column
'La macro ne s'exécute que si on modifie une cellule du tableau
'et si on a activée la macro (cellule L1 = 1)
If Ligne > 18 And Colonne < 13 And Range("M1").Value = 1 Then
'Si Insertion est faux, cela veut dire qu'on a rien insérer, dans ce cas on peut insérer une ligne
If Insertion <> True Then
If Cells(Ligne + 1, 1).Value <> "" Then
'On va insérer une ligne, donc on modifie la variable Insertion pour ne pas réitérer
Insertion = True
'Insertion de la ligne
Cells(Ligne + 1, 1).EntireRow.Insert shift:=xlDown
End If
'on remet Insertion à faux avant d'arrêter la Macro pour pouvoir la réutiliser
Insertion = False
End If
End If
'collage de la sélection dans la nouvelle ligne'
Sheets(ActiveSheet).Range("la dernière ligne de la feuille active").Copy Destination:=Sheets("Catalogue").Range("a16") 'je ne comprends pas à quoi sert ce Range à la fin '
End If
End Sub |
Partager