VBA insérer ligne, recopier formule
laduche31
-
Exceleuse Messages postés 8 Statut Membre -
Exceleuse Messages postés 8 Statut Membre -
Bonjour,
je cherche une macro qui me permettrais d'insérer une ligne après la dernière ligne qui a une valeur < à 999 en colonne A.
De plus, j'aimerai que cette ligne recopie les formules (uniquement les formules, pas les données) de la ligne du dessus.
Merci grandement par avance!
Cordialement,
Adrien
je cherche une macro qui me permettrais d'insérer une ligne après la dernière ligne qui a une valeur < à 999 en colonne A.
De plus, j'aimerai que cette ligne recopie les formules (uniquement les formules, pas les données) de la ligne du dessus.
Merci grandement par avance!
Cordialement,
Adrien
7 réponses
-
Insère une ligne au-dessus de la cellule active en copiant les formules de la ligne précédente :
Sub InsertARow() ActiveCell.EntireRow.Insert Shift:=xlDown ActiveCell.Offset(-1, 0).EntireRow.Copy Cells(ActiveCell.Row, 1) On Error Resume Next ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers + _ xlTextValues + _ xlLogical + _ xlErrors).ClearContents End Sub
-
Bonjour Patrice et merci pour ta réponse.
Une partie de ton code m'intéresse, cependant mon objectif final est de repérer la dernière ligne ayant une valeur inférieur à 999 dans la première colonne et d'insérer une ligne en suivant. -
Essaies ce code :
Sub InsertARow() Dim cel As Range Set cel = Cells(Rows.Count, 1).End(xlUp) Do While Not cel.Value < 999 If cel.Row = 2 Then Exit Sub Set cel = cel.Offset(-1) Loop cel.EntireRow.Insert Shift:=xlDown Set cel = cel.Offset(-2) cel.EntireRow.Copy Cells(cel.Row + 1, 1) On Error Resume Next cel.Offset(1).EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers + _ xlTextValues + xlLogical + xlErrors).ClearContents End Sub
-
Ton code m'insères avant la dernière ligne, mais en cherchant je devrais dans ton code je devrais pouvoir adapter ça, merci beaucoup Patrice et bonne soirée!!
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
Décidément, aujourd'hui j'ai tendance à lire en travers !
Voici le code modifié :Sub InsertARow() Dim cel As Range Set cel = Cells(Rows.Count, 1).End(xlUp) Do While Not cel.Value < 999 If cel.Row = 2 Then Exit Sub Set cel = cel.Offset(-1) Loop cel.Offset(1).EntireRow.Insert Shift:=xlDown cel.EntireRow.Copy Cells(cel.Row + 1, 1) On Error Resume Next cel.Offset(1).EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers + _ xlTextValues + xlLogical + xlErrors).ClearContents End Sub -
-
De rien, au plaisir de te relire sur le Forum