Comment copier une plage variable de cellules ?

Bonjour à tous,
Je souhaite copier à la demande donc par macro une plage de cellules plus ou moins longue mais toujours de 5 colonnes.
Cette plage commence systématiquement en A1 et se termine donc en E5, E6…E25 au maximum
Le nombre de lignes à copier se trouve en F25
J’ai essayé la fonction INDIRECT mais j’ai une erreur : “Sous-procédure ou procédure fonction non définie”
Voici la commande que j’ai utilisée:

args2(0).Value =INDIRECT("$A$1:$E" &F25)
Si vous avez besoin de plus d’infos, dites le moi.
Merci par avance.

Bonjour @cricriilyenadeja

Je déduis de la question que tu utilises l’enregistrement de macro. Il y aurait d’autres moyens de procéder mais pour ne pas nous écarter de ce que tu connais tu peux faire quelque chose comme ceci :

oSheet  = thiscomponent.sheets.getByName("Feuille1")
sNbLig = oSheet.getCellRangeByName("F25").string
  • La première ligne récupère dans la variable oSheet la feuille nommée Feuille1 du document courant
  • La ligne suivante récupère dans la variable sNbLig ce qui figure dans la cellule F25

Les noms de variables sont libres (moyennant le respect de quelques normes).

On peut ensuite utiliser le nombre de lignes à copier comme ceci :

args1(0).Value = "$Feuille1.$A$1:$E$" & sNbLig

Ce qui donne quelque chose comme :

sub CopierVariable

dim oSheet as object
dim sNbLig as string
dim document   as object
dim dispatcher as object

oSheet  = thiscomponent.sheets.getByName("Feuille1")
sNbLig = oSheet.getCellRangeByName("F25").string

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$Feuille1.$A$1:$E$" & sNbLig

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

args1(0).Value = "$Feuille1.$A$15"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())    

end sub

Voir le classeur CopierVariable.ods

Cordialement