Toujours à la découverte du VBA pour Excel et quelques problèmes:
1) petite question pour commencer: Comment utiliser le retour d'un InputBox?
Je récupère un nombre avec un Input box qui demande le "dénominateur" voulu par l'usager:
Denominateur = InputBox(Message2, Titre2)
Pourquoi dans mon code
ActiveCell.Formula = "PiFo(Denominateur)" ne donne rien ( message dans EXCEL : #VALEUR!)
alors que
A
ctiveCell.Formula = "PiFo(1000)" me donne un résultat valide dans la cellule active ??
2) Combiner texte et résultat d'une fonction
Ensuite, je voudrai afficher dans la cellule active la phrase :
La fonction PiFo retourne le nombre *résultat de la fonction*
(sachant que ma fonction "PiFo" prend un nombre en parametre et en retourne un autre.)
J'ai essayé pour tester avec le chiffre 10000 :
ActiveCell.Formula = "La fonction PiFo retourne le nombre :" & "=PiFo(10000)"
ça ne marche pas
ActiveCell.FormulaR1C1 = "La fonction PiFo retourne le nombre :=PiFor(10000)" qui ne marche pas non plus...
pour ton 1), sache que VB interprête ce qu'il y a entre guillemets comme chaine de caractères, il ne comprend donc pas les variables qui s'y trouvent.
Avec ActiveCell.Formula = "PiFo(" & Denominateur & ")", tu verras, ça ira mieux !
Pour ton 2), c'est quoi PiFo, une function créée par tes soins ?
Si oui, elle est forcémment en publique, donc il suffit de faire ça :
ActiveCell.Formula = "La fonction PiFo retourne le nombre : " & PiFo(10000)
Si c'est une fonction d'Excel (et que je n'ai pas), tu mets le résultat dans une cellule (de PiFo) et tu concatènes comme 2 textes.
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
Tu peux utiliser Value ou Formula ou même rien du tout
C'est plus une question de lisibilité (ou de convention)
Si on voit le mot Formula dans une commande, on pourrait s'attendre à y retrouver une formule telle quelle.
ex:
ActiveCell.Formula = "=Pifo(1000)"
Tu retrouveras le résultat de ta Function dans la cellule, mais ce sera la formule qui sera inscrite dans la barre de formule.
Ici, tu veux transférer une valeur dans la cellule, alors aussi bien y aller avec .Value.