Fonction texte d'excel en VBA?

Résolu
marcellin54 Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 3 mai 2011 - 22 avril 2011 à 04:37
marcellin54 Messages postés 5 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 3 mai 2011 - 22 avril 2011 à 14:30
Bonjour à tous,
Je ne suis pas habitué des forums mais étant dos au mur je vous lance mon SOS.
Je ne connais pas trop le VBA et je suis en train d'essayer de créer une fonction pour Excel. Cette fonction est très simple elle doit convertir en texte un nombre que l'on rentre.
Sous Excel j'utilisa la fonction texte de cette façon : =TEXTE(B1;"# ##0,##_) ;(# ##0,##);""-""_)")
ou B1 est le nombre à convertir. Il est vital que je garde le format donné dans cette formule.
Suite à pas mal de recherche sur internet j'ai essayer de construire ma formule VBA mais impossible de trouver quelque chose qui marche. Voici ce que j'ai essayer (entre autre mais je ne vous met que les plus réussite, ou en tout cas celles qui me plaisent le mieux) :

Function Conversion(Nbrfrancais)
Conversion = Application.WorksheetFunction.Texte(Nbrfrancais, "# ##0,##_) ,(# ##0,##),""-""_)")
End Function
________

Function Conversion(Nbrfrancais)
Conversion.Formula = "=TEXT(Nbrfrancais,""# ##0,##_) ;(# ##0,##);""""-""""_)"")"
End Function

Est ce que quelqu'un pourrait m'aider? Je ne peux pas utiliser le FORMAT de VBA car il est moins permissif que le format personnalisé de la fonction TEXTE. Je pense que le plus simple est d'intégrer la fonction TEXT d'excel mais il y a quelque chose qui doit m'échapper...
Par avance un gros gros merci pour votre aide...

Marcellin

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 avril 2011 à 08:43
Salut

Quand tu déclares/utilises une Function, il faut que celle-ci renvoie un résultat.
-1- Faire une déclaration propre
Function Conversion(Nbrfrancais As Double) As String
Ici, la fonction renverra une chaine et sera alimentée par un chiffre à virgule

-2- Renvoyer le résultat
Conversion = Application.WorksheetFunction...

-3- Appeler la fonction depuis le code
Dim maChaine As String
maChaine = Conversion(4012.17)

Cela devrait suffire.
Ce n'est pas le cas ici, mais fait attention de ne pas nommer tes Sub/Functions avec des noms pouvant ressembler à des mots clé du langage.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Rejoignez-nous