[Résolu] GetValue() ? comment lire une cellule avec les macros

Bonjour, je découvre BASIC,

malgré ma lecture et les essais des snippets (que je n’ai jamais pu faire marcher) de l’aide,
je n’arrive pas à comprendre comme récupérer le contenu d’une cellule Calc.

https://help.libreoffice.org/7.3/fr/text/sbasic/guide/read_write_values.html?&DbPAR=SHARED&System=UNIX

Écrire dans une cellule, pas de problème,
le tableau des get et des set, bien compris
mais ensuite, impossible de faire une acquisition !

Dans la page indiquée, à priori, il n’est pas montré comment faire.

On passe tout de suite à ScriptForge

Ce que je n’arrive pas à voir c’est comment renvoyer dans une variable un getValue() ou un getString() !

Merci d’un exemple simple, du genre, je prends la valeur en A1 et je la mets en A2 !

Merci d’avance de votre temps.

Cordialement, José

Bonjour,

dans les publications LibreOffice, trouvez les antisèches :

https://wiki.documentfoundation.org/FR/Documentation/Publications#Antis.C3.A8ches_Basic

Il y en a une consacrée à Calc. Elle devrait vous aider. Les autres
aussi :wink:

Très cordialement,

@jfn Merci du lien. Très intéressant :slight_smile:

Bonsoir,

A affiner selon votre contexte

Sub transfert
Dim oSheet as Object
Dim oCellOrigine as Object
Dim oCellDestination as object
Dim valeur as variant

oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellOrigine = oSheet.getCellRangeByName(“A1”)
valeur= oSheet.getCellRangeByName(“A1”).string
oCellDestination= oSheet.getCellRangeByName(“A2”)
if isnumeric(valeur) then
oCellDestination.value =valeur
else
oCellDestination.string =valeur
endif
end sub

Bon courage
Claude

Bonjour, merci du retour.

C’est ce genre de routine que j’ai testé.
J’ai copié-collé votre routine,

et j’ai “Syntax Error”.

Dans cette ligne

oCellOrigine = oSheet.getCellRangeByName(“A1”)

il me surligne

oSheet.getCellRangeByName(

En “A1”, j’ai mis un nombre, des caractères, et même vide ! Même erreur.

Que je lance le programme dans l’éditeur ou lié à un bouton dans la feuille.

La routine est toute seule dans un module
Nouvel élément… je ne peux pas mettre de Breakpoint, il active la Syntax Error ?!

Je suis sur :smiling_face:
Version: 7.3.4.2 / LibreOffice Community
Build ID: 30(Build:2)
CPU threads: 8; OS: Linux 5.13; UI render: default; VCL: gtk3
Locale: fr-FR (en_GB.UTF-8); UI: en-US
Ubuntu package version: 1:7.3.4~rc2-0ubuntu0.20.04.1~lo1
Calc: threaded

Merci de votre temps.


Mise à jour :slight_smile:
J’ai mis en commentaire la ligne getCellRangeByName et j’ai assigné la chaîne “Bonjour” à la variable “valeur”

Je retrouve la même erreur sur cette seconde commande :frowning:

Amicalement, José

Bonjour,
Je ne sais pas pourquoi, lors du copier-coller du code les guillemets ouvrants ne sont pas corrects, J’avais la même erreur lorsque je recopiais le code du message dans une macro… J’envoie donc le fichier de test qui fonctionne
test.ods (9.3 KB)

Oui,

cela marche très bien et comme j’espérais :slight_smile:

Ah oui ! Je vois la différence avec les guillemets !
Je me doutais que c’était une histoire d’environnement plus que de code !

Merci parce que ton code est simple !


Question subsidiaire :slight_smile:
J’ai vu des tutos LibreOffice avec du

com.sun.star.table.CellContentType.VALUE ’ Used for cells containing numbers
com.sun.star.table.CellContentType.TEXT ’ Used for cells containing characters
com.sun.star.table.CellContentType.EMPTY ’ Used for empty cells
com.sun.star.table.CellContentType.FORMULA ’ Used for cells containing formula

C’est à prendre en compte ou juste un “style” de programmation ?

Merci de ton temps,
Aussi bel après-midi que moi, maintenant que le problème est réglé :).

Amicalement, José

Cela permet de connaître le type d’une cellule. Voir
[Cellules et plages - Apache OpenOffice Wiki]