VBA insérer ligne, recopier formule

laduche31 -  
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

7 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. Exceleuse Messages postés 8 Statut Membre
       
      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
  2. laduche31
     
    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
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  4. laduche31
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  7. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    De rien, au plaisir de te relire sur le Forum
    0