Poser votre question
0

Utilisation des fonctions CALC dans BASIC

posée 2019-12-01 18:06:20 +0100

Image Gravatar de Jacques-64

updated 2019-12-01 18:13:31 +0100

Bonjour,

Je cherche à découvrir l'usage de basic autre que pour gérer des macros. Mes premiers essais pour une fonction simple ne sont vraiment pas concluants : message d'erreur systématique "Sous-procédure ou procédure fonction non définie.". La ligne qui est refusée est (pour les tests, Indx est -1):

Valeur = DECALER (Adresse, Indx, -1)

Où est mon erreur ?

Nota : j'ai aussi essayé avec des ; mais cela donne aussi une erreur : "Erreur de parenthèses."

Cordialement,

éditer requalifier signaler fermer fusionner supprimer

2Réponses

0

répondue 2019-12-02 17:09:09 +0100

Image Gravatar de pierre-yves samyn

updated 2019-12-02 17:54:15 +0100

Bonjour

Je me permets de compléter car l'aide est un peu concise et tu commences (pour découvrir...) avec quelque chose de particulièrement compliqué : la mise en oeuvre de la fonction DECALER.

  • Le service CallFunction attend en paramètre un nom de fonction en anglais (même si ton interface est en français)
  • Les arguments doivent être passés dans un tableau
  • Le premier paramètre est le tableau de données de la plage à décaler
  • Suivent, comme dans l'interface, les lignes & col. à décaler puis la hauteur/largeur de la plage retournée
  • Ce qui est retourné est en effet une plage même s'il n'y a qu'une cellule, d'où la syntaxe permettant d'afficher le résultat (instruction PRINT).

Voici un exemple :

sub MyoffSet()

dim oFA as object,oData as object
dim oRetour as object

oData = thiscomponent.sheets.getByName("Feuille1").getCellRangeByName("A1:B10").getDataArray()

oFA = createunoservice("com.sun.star.sheet.FunctionAccess")

' premier argument pour CallFunction est le nom de la fonction en anglais'
' second argument les paramètres à passer sous la forme de tableau'

oRetour = oFA.callFunction("OFFSET", Array(oData, 1, 0, 1 , 1))

print "En A2 : " & oRetour(0)(0)

oRetour = oFA.callFunction("OFFSET", Array(oData, 6, 1, 1 , 1))

print "En B7 : " & oRetour(0)(0)

end sub

[Ajout 17:50]

Appeler DECALER en basic est quand même le plus souvent inutile : si on connait la plage de départ et le décalage, il est plus rapide d'accéder directement à la plage "cible" soit par son son nom, soit par ses coordonnées. Je te conseille la page du wiki qui regroupe l'essentiel des ressources disponibles et où tu devrais trouver plein d'informations et d'exemples...

Cordialement

éditer signaler supprimer permalien plus
0

répondue 2019-12-02 11:45:09 +0100

La réponse est ici: https://help.libreoffice.org/6.4/en-U... Ne vous effrayez pas du 6.4 dans l'URL, seule la page d'aide est nouvelle. L'exemple donné est supporté depuis bien plus longtemps.

éditer signaler supprimer permalien plus
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2019-12-01 18:06:20 +0100

Consultée: 21 fois

Mise à jour: Dec 02