Fonction TEXT dans Application.Evaluate VBA

Bonjour à tous

Je suis sur un projet et j'aimerais recréer la fonction TEXT en VBA. Mon projet ne se résume pas ça mais j'ai identifier d'où venait mon problème ( la fameuse fonction TEXT) et j'ai donc optimisé mon programme en fonction.

Lorsque j'utilise la fonction TEXT dans une cellule pas de soucis cela fonctionne

=TEXT(A1;"hh:mm")

Mais l'orsque que je l'utilise avec une fonction dans VBA, cela ne fonctionne plus. Il m'affiche #VALUE! dans la cellule où j'ai inséré ma fonction.

Function AVPROD()

AVPROD = Application.Evaluate("=TEXT(A1;""hh:mm"")")

End Function

Au début j'avais un problème avec les guimmets, mais j'ai vu qu'en rajoutant une paire cela fonctionne. Par contre, je sais pas si c'est optimale.

De plus si possible pour le reste de mon projet j'aimerais rester avec Evaluate, cela m'arrangerait grandement.

Voilà j'espère avoir était clair dans l'exposition de mon problème.

Vous trouverez ci joint le fichier excel

Merci d'avance pour votre aide

14text.xlsm (15.52 Ko)

Bonjour,

Essayer avec

AVPROD = Application.Evaluate("TEXT(A1,""hh:mm"")")

c'est à dire sans le signe " = " et en utilisant la virgule ( , ) au lieu de point virgule ( ; )

A+

Super Merci Beaucoup !

Effectivement ça fonctionne, c'est magique

Bonsoir,

Et pourquoi préférer evaluate à Format ?

AVPROD = Format ([A1],"hh:mm")

evaluate interprète le texte entre les doubles cote et VBA est lui même un langage interprété !!!!!

Bonjour,

j'aimerais recréer la fonction TEXT en VBA

si je comprend bien c'est une fonction personnalisée.
Dans ce cas pourquoi se compliquer la vie avec Evaluate ? Tu peux utiliser ta fonction directement dans vba.
a = ta_fonction(param1, param2)
eric

Bonjour eriiic,

C'est tellement évident !!! ...que je n'avais pas réagi, trop "concentré" sur la résolution de l'écriture en défaut...

Bonne journée

Bonjour dysorthographie,

Et pourquoi préférer evaluate à Format ?

Effectivement Format fonctionne tout aussi bien, mais étant encore novice en VBA je ne connaissais pas son existence.

En tout cas, Merci de me l'avoir appris !

Mais j'avais quand même besoin de l'utiliser avec Evaluate. Je vais expliquer pourquoi dans mon prochain message en répondant à eriiic.

Bonjour eriiic,

Comme tu la fais remarquer la fonction en elle même suffit

AVPROD = Application.WorksheetFunction.Text(cellule, "hh:mm")

Comme ceci par exemple si j'ai bien compris

Lors de mon 1er message je dis que mon projet ne se resumait pas à ce simple code mais ayant identifier mon problème je l'ai simplifié.

En effet, ma fonction de base est celle-ci

Function AVPROD(time, temp)

AVPROD = Application.Evaluate("(SUMPRODUCT((TEXT(Table13[Date],""hh:mm"")=""" & time & """)*(TEXT(Table13[T Ext (°C)],""0"")=""" & temp & """)*Table13[Puissance (MW)]))/(SUMPRODUCT((TEXT(Table13[Date],""hh:mm"")=""" & time & """)*(TEXT(Table13[T Ext (°C)],""0"")=""" & temp & """)))")

End Function

Elle me permet d'utiliser SUMPRODUCT dans un tableau et d'en ressortir la puissance moyenne. (Ci joint mon excel)

Sauf que comme le dit dysorthographie la fonction Evaluate est très lourde et lorsque j'utilise ma fonction dans une boucle et bah ça mets pas mal de temps avant de sortir mes resultats.

Du coup je suis à la recherche d'une nouvelle écriture pour cette fonction pour qu'elle soit la plus légére possible.

Je pense que l'on dérive un peu trop du sujet initiale et je vais recréer une discussion pour cette demande en particulier.

En tout cas merci pour toutes vos réponses

9test.xlsm (124.31 Ko)
Rechercher des sujets similaires à "fonction text application evaluate vba"