VBA insérer ligne, recopier formule

Fermé
laduche31 - 14 nov. 2011 à 16:12
Exceleuse Messages postés 8 Date d'inscription vendredi 13 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 20 mai 2016 à 16:35
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
A voir également:

7 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
14 nov. 2011 à 16:28
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

1
Exceleuse Messages postés 8 Date d'inscription vendredi 13 mai 2016 Statut Membre Dernière intervention 23 mai 2016
20 mai 2016 à 16:35
Bonjour,
Et bien moi, le code m'a bien servi, ça a fonctionné du premier coup pour ce que je voulais !
Je voulais juste dire merci même si le topic date !

Bonne journée !
0
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.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
14 nov. 2011 à 17:05
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

0
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!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
14 nov. 2011 à 18:19
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
0
Merci beaucoup Patrice :)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
15 nov. 2011 à 12:03
De rien, au plaisir de te relire sur le Forum
0