Macro qui me fige une cellule à copier

Résolu
shalkare -  
 shalkare -
Bonjour,
J'ai chercher une solution sur pas mal de forums, mais...
Donc merci par avance à celles et ceux qui vont se creuser la tête.

Mon problème:
Excel fige une cellule
=SOMME($J$2:$J$4340 )
que j'aimerais copier.

Explication:
J'utilise une macro pour totaliser une colonne, et afficher le résultat dans une cellule.
Comme j'ai 5 colonnes à totaliser, j'ai fait une sélection de la cellule (contenant la formule), et un copier par "autofill" sur les cellules adjacentes (J4 vers O4, par exemple)
Sauf qu'au lieu de me copier la formule, ça me copie le résultat de la première colonne.
Après recherche, je m'aperçois qu'excel a figé les coordonnées de la cellule, rendant l'utilisation de l'autofill obsolète.

voici un bout de la macro:
' b- faire la somme d'une colonne et l'afficher dans la première cellule total
Dim PlageTotaux As Range 'Déclare "PlageTotaux" comme étant une sélection
Set PlageTotaux = ActiveSheet.Range(Cells(MyRow, 10), Cells(2, 10)) 'Cellules faisant partie de "PlageTotaux"
ActiveSheet.Cells(MyRow + 1, 10).Formula = "=SUM(" & PlageTotaux.AddressLocal & " )" 'donne à la bonne cellule la formule "SOMME de PlageTotaux"

' c- extension de la première cellule total, pour avoir une ligne de totaux
Cells(MyRow + 1, 10).Select
Selection.AutoFill Destination:=Range(Cells(MyRow + 1, 10), Cells(MyRow + 1, 15)), Type:=xlFillDefault


RESULTAT: dans la cellule total de la colonne, j'ai la formule
=SOMME($J$2:$J$4340 )

les autres cellules contiennent donc exactement la même formule, alors que l'autofill (selon ce que j'en connais) aurait dû me mettre à jour les coordonnées.

j'ai essayé d'autre façon de faire le copier coller, mais... je n'ai pas encore trouvé.
quelqu'un pourrait'il m'éclairer de la lumière de ses connaissances, svp ? parceque là, je craque ! ;)

d'avance, merci
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
Bonjour,

A priori le problème vient de cette instruction :

ActiveSheet.Cells(MyRow + 1, 10).Formula = "=SUM(" & PlageTotaux.AddressLocal & " )"

car par defaut AddressLocal renvoi la référence en absolu il faut donc lui spécifier de ne pas le faire en ajoutant des paramétres comme ceci :

= "=SUM(" & PlageTotaux.AddressLocal (RowAbsolute:=False, ColumnAbsolute:=False) & " )"

Ou en libérant seulement les lignes, ou seulement les colonnes.


A+
0
shalkare
 
Merci Pilas31 !

Ca fonctionne très bien .
C'en est désolant tellement la solution parait simple ;)

A bientôt, qui sait.
0