Comment concatener texte + résultat d'une fonction ?

Résolu
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008 - 18 mai 2007 à 21:20
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 19 mai 2007 à 16:07
Bonjour à tous !

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...

Je vous remercie beaucoup !
@+

5 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 mai 2007 à 00:00
Essaie comme ceci
ActiveCell.Value = "La fonction PiFo retourne le nombre : " & PiFo(Denominateur)

MPi
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
18 mai 2007 à 21:33
Salut,

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~
  
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
18 mai 2007 à 22:54
On y est presque je pense... maintenant faut  mixer les deux :

ActiveCell.Formula = "La fonction PiFo retourne le nombre : " & PiFo(10000)    //Fonctionne parfait

Mais je veux utiliser Denominateur alors j'écris: 

 ActiveCell.Formula = "La fonction PiFo retourne le nombre : " & PiFo(" & Denominateur & ")   // Ne fonctionne pas
  
ActiveCell.Formula = "La fonction PiFo retourne le nombre : " & "PiFo(" & Denominateur & ")"  // Ne fonctionne pas 

Merci
@+
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
19 mai 2007 à 04:06
Alors, la ligne suivante

ActiveCell.Value = "La fonction PiFo retourne le nombre : " & PiFo(Denominateur)

fait effectivement ce que je veux, merci beaucoup !!

Pourquoi utiliser Value + que Formula ? Y a t-il une différence/ aurait-on aussi pu faire avec Formula?

Merci à vous 2
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 mai 2007 à 16:07
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.

MPi
0
Rejoignez-nous