[Résolu][Calc] Utilisation de formule calc

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Goonies
Fraîchement OOthentifié
Messages : 4
Inscription : 31 janv. 2018 15:19

[Résolu][Calc] Utilisation de formule calc

Message par Goonies »

Bonjour,

Je vous expose mon léger problème :
Je dois récupérer des valeurs provenant de plusieurs colonnes d'une autre feuille sous certain critères, jusque là pas trop de problème sauf une certaine colonne dont les valeurs sont sous la forme "8 (plusieurs espaces) 645,85"

Pour éviter de devoir créer manuellement une colonne avec une formule CALC qui convertie cette valeur en valeur numérique après avoir récupérer la valeur initiale, j'ai donc utilisé dans mon code :

Code : Tout sélectionner

doc.Sheets(1).getCellByPosition(3,liCopie).setFormula("=CNUM(SUBSTITUE(" & doc.Sheets(0).getName & "." & Acol & li+1 &";"" "";""""))")
"Acol" correspondant à la lettre de la colonne ayant étant saisi dans un inputBox lors de l'exécution de ma macro
"li" est le numéro de la ligne qui est incrémenté dans une boucle.

Voilà ce que cela m'affiche : [img]h**ps://image.noelshack.com/minis/2018/05/3/1517409744-exemple.png[/img]
:alerte: Merci d'utiliser notre service de pièce-jointe dont le lien est mentionné en bas lorsque vous écrivez votre message : -comment-joindre-un-fichier-sur-ce-forum.html
Cela me met l'erreur #NOM?, pourtant la cellule de la colonne F de l'image contient exactement la même formule (un simple copier/coller de la formule de la colonne D!).
Ma formule est donc juste mais je n'arrive vraiment pas à savoir d'où provient mon erreur.

J'ai testé le type des cellules de la colonne D et elles sont bien du type 'Formule'.

J'avais essayé en utilisant la fonction SPLIT mais n'étant pas très calé dans la programmation basic, ce fut un raté.

J'espère avoir été assez précis dans l'explication de mon problème.
Merci d'avance de votre aide!
Dernière modification par micmac le 31 janv. 2018 17:13, modifié 2 fois.
Raison : Ajout de [Résolu]
Libre Office 5.2 sous Windows 7
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc] Utilisation de formule calc dans une macro

Message par Hubert Lambert »

Bonjour,

Si tu utilises setFormula, l'argument doit contenir le nom anglais des formules (en l'occurrence VALUE et non CNUM).
Si tu veux entrer une formule avec un nom ou un formatage localisé, tu dois utiliser la propriété FormulaLocal =

Code : Tout sélectionner

doc.Sheets(0).getCellByPosition(0,0).FormulaLocal = "=CNUM(""18"")"
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Goonies
Fraîchement OOthentifié
Messages : 4
Inscription : 31 janv. 2018 15:19

Re: [Calc] Utilisation de formule calc dans une macro

Message par Goonies »

Bonjour,

Merci de la réponse rapide!
Effectivement, il fallait bien les nom des formules en anglais (VALUE et SUBSTITUTE).

J'avais déjà essayé en utilisant formulaLocal(formule) en pensant que cela s'utilisait comme setFormula(formule) mais c'était donc une erreur de syntaxe de ma part!
Libre Office 5.2 sous Windows 7
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 06:54
Localisation : CATALUNYA
Contact :

Re: [Résolu][Calc] Utilisation de formule calc

Message par Churay »

Bonsoir
Hubert Lambert a écrit :Si tu veux entrer une formule avec un nom ou un formatage localisé, tu dois utiliser la propriété FormulaLocal =
Attention néanmoins à FormulaLocal
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][Calc] Utilisation de formule calc

Message par Hubert Lambert »

En effet !
Mais ne pas perdre de vue que setFormula peut parfois aussi réserver son lot de surprises :

Code : Tout sélectionner

    F1 = thiscomponent.Sheets(0)
    A1 = F1.getCellRangeByName("A1")
    B1 = F1.getCellRangeByName("B1")
    A2 = F1.getCellRangeByName("A2")
    B2 = F1.getCellRangeByName("B2")
    A1.setFormula("12/1/2018")
    B1.FormulaLocal = "12/1/2018"
    A2.setFormula("= 1,234 + 1")
    B2.FormulaLocal = "= 1,234 + 1"
:)
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Répondre