Comment concatener texte + résultat d'une fonction ? [Résolu]

Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008
- - Dernière réponse : cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 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 !
@+
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
3
Merci
Essaie comme ceci
ActiveCell.Value = "La fonction PiFo retourne le nombre : " & PiFo(Denominateur)

MPi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 192 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MPi
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
0
Merci
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~
  
Commenter la réponse de mortalino
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008
0
Merci
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
@+
Commenter la réponse de fanjomtl
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008
0
Merci
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
@+
Commenter la réponse de fanjomtl
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi