Macro copie formule

Bonjour,

Je souhaiterai, via une macro, saisir une formule dans une cellule puis la copier sur une plage de cellules déterminée (ex : saisie de la formule en cellule A2 à copier en colonne A jusqu’à la ligne 500).

J’ai trouvé le code pour saisir la formule dans la cellule mais je cale sur la copie jusqu’à la ligne 500.

Merci d’avance à ceux qui pourront m’aider !

Bonne soirée

Bonjour,

Il me semble qu’il n’y ait pas besoin d’une macro pour cela, si toutefois il s’agit bien de recopier vers le bas d’une même colonne, un formule; il suffit , après avoir saisi la formule(enA2), sélectionner la zone A2:A500 (dans la zone de nom par exemple), puis de saisir Ctrl/D pour obtenir la recopie.

Cordialement.
description de l'image

Bonsoir,

Merci pour l’astuce que je ne connaissais pas.
Mais au cas présent, la recopie de la formule doit absolument se faire par macro.

Je m’explique …
Je développe actuellement dans un cadre professionnel un outil de retraitement automatique de données.
Un fichier csv est notamment intégré par macro sur un onglet particulier (colonnes A à F par exemple) et j’ai besoin d’une macro permettant de concatener (automatiquement) en colonne G les colonnes A et B sur un nombre de lignes bien précis (2000).

Merci d’avance pour votre aide.

Bonjour

Deux possibilités :

  1. On entre la formule en A2 et on remplit vers le bas sur la plage concernée (équivalent du menu FeuilleRemplir les cellules)
  2. On crée un tableau des formules à saisir et on l’entre directement dans la plage

Par exemple saisieFormule.ods :

Sub SaisieFormule()

dim oSheet as object, oCell as object, oRange as object
dim sFormule as string
dim tableauFormule(498) as variant
dim i as long

sFormule = "=$A$1*2"

oSheet = thiscomponent.sheets.getByName("Feuille1")

' Première solution' 
oCell = oSheet.getCellRangeByName("A2")

oCell.Formula = sFormule
oRange = oSheet.getCellRangeByName("A2:A500")
oRange.fillSeries(com.sun.star.sheet.FillDirection.TO_BOTTOM,com.sun.star.sheet.FillMode.SIMPLE,0,0,0)

' Deuxième solution'
oRange = oSheet.getCellRangeByName("B2:B500")
 
for i= 0 to 498
   tableauFormule(i)=array("=$A$1*2")
next i

oRange.FormulaArray=tableauFormule

End Sub

Cordialement

Merci pour l’aide !