IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utilisation EVALUATE en Fonction dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut Utilisation EVALUATE en Fonction dans Excel
    Bonjour,

    Je suis en train de faire un petit tableau qui additionne ou soustrait des valeurs, suivant que dans une colonne, il y a un "+" ou un "-", et j'ai voulu faire original. Plutôt que de faire une formule =SI(...), j'ai créé une formule VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
    End Function
    Donc dans la case ou je veux le résultat, je tape par exemple en C2 =Eval(C1&A2&B2) avec un nombre en C1, "+" ou "-" en A2 et un autre nombre en B2.

    Et là, je me suis rendu compte que ça ne marchait qu'avec des entiers. Par exemple :

    - ça marche avec B2 qui vaut 100, mais pas avec B2 qui vaut 99,5 (#VALEUR!), mais ça marche avec =ENT(99,5).
    - ça marche avec =100/4 mais pas avec =100/3 (#VALEUR)

    Est ce que quelqu'un sait pourquoi ?

    Merci !


    Jodko.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction Evaluate, comme son nom l'indique évalue une formule mais pas une référence.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Result()
      Application.Volatile
      Result = Evaluate("=SUM(D3:D7)")
    End Function
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Result()
      Application.Volatile
      Result = Evaluate("=SUM(t_Data[Montant])")
    End Function
    On peut bien entendu y ajouter un ou plusieurs arguments et dans ce cas, nul besoin de la ligne Application.Volatile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Result(r As Range)
      Result = Evaluate("=SUM(" & r.Address & ")")
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut
    Merci.

    Je pense saisir le commentaire, mais je n'y vois pas de raison que ça marche avec des entiers mais pas des décimaux. C'est la présente d'une vigule et pas d'un point ?


    Jodko.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Exemple de l'utilisation de la fonction personnalisée directement dans Excel
    Le code de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Result(r As Range)
      Result = Evaluate("=SUM(" & r.Address & ")")
    End Function
    En cellule F5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Result(t_Data[Montant])
    Illustration Nous pouvons voir que le résultat renvoie bien un nombre avec décimales

    Nom : 220725 Evaluate.png
Affichages : 2265
Taille : 11,8 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut
    C'est n'est pas exactement ce que je cherche à faire.

    Mon idée est de calculer la valeur de la cellule C_n en prenant la valeur de la cellule C_n-1 et en y ajoutant ou retranchant la valeur de la cellule B_n suivant que la valeur de A_n est "+" ou "-".

    J'ai testé, ça marche avec des séparateurs décimaux qui sont des "." et pas des ",". Je pense que c'est donc un pur problème (récurrent) du fait que VBA est en "VO" alors que Excel est en "VF". Et je ne sais plus comment contourner ça dans VBA.


    Julien.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Montrez moi comment vous le feriez manuellement avec une formule excel et là sans doute que je pourrais vous aider
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [Syntaxe] utilisation d'une fonction dans mysql
    Par mussara dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/04/2007, 19h40
  2. Réponses: 10
    Dernier message: 08/02/2007, 13h18
  3. utilisation d'une fonction dans un cham texte
    Par Mat_DZ dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 11/09/2006, 14h16
  4. Utilisation d'une fonction dans une procedure
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/08/2005, 15h51
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo