OVH Cloud OVH Cloud

Insérer une ligne sans détruire les formules

1 réponse
Avatar
Michir
Bonjour,
Je souhaiterais écrire une macro qui puisse m'insérer une ligne sous une
cellule sélectionnée dans un tableau complexe, tout en reconstituant les
formules et le formatge existant.
J'ai essayé plusieurs macros dont celle-ci (de l'un d'entre vous, il y a
plusieurs mois) mais elle provoque des erreurs dans les formules et suivant
les cas me renvoie une erreur d'exécution 1004:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A2").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A2").Select
End Sub

Merci pour le coup de main
Michel

1 réponse

Avatar
Ange Ounis
A essayer (une de plus !) :

Sub InsereAvecFormules()
Dim i As Long
ActiveCell.EntireRow.Insert
i = ActiveCell.Row
Range("A" & i - 1 & ":IV" & i).FillDown
End Sub

Attention : les erreurs dans les formules peuvent être tout à fait normales dans
la mesure où les références relatives peuvent, après copie, renvoyer à des
cellules vides, par exemple.

----------
Ange Ounis
----------

Bonjour,
Je souhaiterais écrire une macro qui puisse m'insérer une ligne sous une
cellule sélectionnée dans un tableau complexe, tout en reconstituant les
formules et le formatge existant.
J'ai essayé plusieurs macros dont celle-ci (de l'un d'entre vous, il y a
plusieurs mois) mais elle provoque des erreurs dans les formules et suivant
les cas me renvoie une erreur d'exécution 1004:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A2").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A2").Select
End Sub

Merci pour le coup de main
Michel