Bonjour tout le monde !!
Utilisateur d'Excel 2000, je commence à tater des macros, mais pas encore à un niveau bien élevé hélas...
J'ai un souci avec la macro suivante qu'on m'a refilé et qui doit normalement me permettre d'insérer des lignes qui préservent mes formules et mes formats sans garder les saisies :
Sub NouvelleLigneAuDessus()
' Insère une ligne au-dessus de 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.EntireRow.Insert
ActiveCell.Range("A2").Select
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).Clear Contents
End If
Next i
End Sub
Lorsque j'utilise cette macro, Excel ne recopie pas de façon identique certaines formules bien particulières :
Ce sont les formules qui se basent sur des cellules de leur propre colonne qui posent problème.
Exemple : j'ai dans une colonne de A1 à A35 la formule suivante :
=LC(-1)+L(-1)C
j'insère une ligne au-dessus de A26, la nouvelle A25, et bien la macro fait que A26 va désormais chercher la donnée de A24 et j'ai =(LC-1)+(L-2C) à la fois dans A26 mais aussi dans A25 puisque la ligne recopie exactement les formules d'en dessous, d'où un décalage des données évidemment.
Comment faire pour que les formules des lignes existantes ne changent pas d'elles-même quand j'insère une ligne par cette macro? Y a-t-il qqchose à corriger dans cette macro???
Merci d'avance pour votre précieuse aide, je suis largué...
A+ !!