Bonjour,
J’ai créé sous LibreOffice Calc une Macro à l’aide de l’assistant Outils>Macro>Enregistrer un macro.
J’ai créé cette Macro dans le but de faire un Copiuer/Coller d’une formule à de multiples endroits de mon tableau.
Elle ne fonctionne pas correctement car les cellules sont adressées en mode absolue.
En effet elle ne fonctionne que dans la zone où elle a été créée, je voudrais l’uliliser x fois depuis une cellule quelconque.
Je joint la copie de cette macro dans le fichier suivant.
Macro LO-Calc.odt (25,3 Ko)
Je vous remercie par avance, et vous prie d’être indulgent avec moi, car c’est la premiére fois que je vous demande assitance.
Meilleures Salutations.
Bonjour,
Voici une macro qui devrait faire l’affaire :
Sub CopierColler()
Dim oSource As Object, aSource As com.sun.star.table.CellAddress, oFeuille As Object, oDest As Object
'Paramètres de décalage
Const DecalageVertical=4
Const DecalageHorizontal=0
Const HauteurDest=16
Const LargeurDest=1
'On récupère la sélection courante
oSource=ThisComponent.CurrentSelection
'on quitte si ce n'est pas une cellule seule
If Not oSource.supportsService("com.sun.star.sheet.SheetCell") Then Exit Sub
'On récupère la feuille
oFeuille=oSource.SpreadSheet
'On récupère l'adresse de la cellule source
aSource = oSource.CellAddress
'Pour transposer, on va devoir copier dans chaque cellule destination, alors on va faire des boucles :)
Dim colonne, ligne
'on boucle sur les colonnes de destination
For colonne=aSource.column+DecalageHorizontal To aSource.column+DecalageHorizontal+LargeurDest-1
'on boucle sur les lignes de destination
For ligne=aSource.row+DecalageVertical To aSource.row+DecalageVertical+HauteurDest-1
'on récupère la cellule destination
oDest=oFeuille.getCellByPosition(colonne,ligne)
'on copie la source dans la destination
oFeuille.copyRange(oDest.CellAddress,oSource.RangeAddress)
Next ligne
Next colonne
'et hop :)
End Sub
J’ai rentré comme constantes les décalages que j’ai pu observer dans ta macro enregistrée.
Ça fonctionne à condition que tu aies toujours besoin du même décalage entre la cellule source et les cellules destination.
J’espère que ça va t’aider!
Par contre attention, c’est un peu rouleau compresseur. S’il y a quelque chose dans la plage de destination, ce sera écrasé sans pitié !
apparemment, c’est pas possible avec LO
peut-être ça peut se faire simplement sans macro ?
https://help.libreoffice.org/latest/fr/text/scalc/guide/mark_cells.html
toujours