Je veux écrire une formule dans une colonne de mon classeur en fonction du nombre de valeurs dans une autre colonne.
La formule est : =SI($Fx<>"";NB.SI(MESANN_PLAGE_REF;$Fx);"")
La formule fonctionne très bien en directe dans le classeur. Mais si je l'écris dans une macro alors le résultat est #nom?. J'ai essayé plusieurs façons d'écrire la formule avec et sans utiliser de plage de nom.
Pour que le résultat soit bon, il suffit de se placer dans la cellule ou la formule est écrite et de modifier le contenu (par exemple ajouter puis supprimer un espace à la fin) et le résultat s'affiche alors. Je ne comprends pas pourquoi
Je joins un classeur exemple.
Je remercie d'avance si quelqu'un peut m'aider.
Code : Tout sélectionner
public doc, classeur, feuille as object
sub service
doc = thiscomponent
classeur = doc.currentcontroller
feuille = classeur.activesheet
end sub
sub ecrireformule
dim x as integer
service
' formule = SI($Fx<>"";NB.SI(MESANN_PLAGE_REF;$Fx);"")
for x = 5 to 15
' formule simple qui marche
feuille.getcellrangebyname("A" & x).setformula("=$F" & x)
' formule avec plage de nom qui donne #nom?
feuille.getcellrangebyname("B" & x).setformula("=SI($F" & x & "<>"""";NB.SI(MESANN_PLAGE_REF;$F" & x & ");"""")")
' formule sans plage de nom qui donne #nom?
feuille.getcellrangebyname("C" & x).setformula("=SI($F" & x & "<>"""";NB.SI($F5:$F15;$F" & x & ");"""")")
' formule compliquée qui donne #nom?
feuille.getcellrangebyname("D" & x).setformula(join(split("=SI($Fx<>"""";NB.SI(MESANN_PLAGE_REF;$Fx);"""")", "x"), x))
next x
end sub