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

Signaler
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

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

MPi
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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~
  
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008

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
@+
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008

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
@+
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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