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 :

VBA/xl/97 Sectarisme chez Evaluate() ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut VBA/xl/97 Sectarisme chez Evaluate() ?
    Bonjour,
    Dans cet exemple, Evaluate refuse "IsNumeric", quelqu'un peut-il m'expliquer pourquoi ? Ou est-ce spécifique à VBA97 où Evaluate n'est utilisable que pour les formules mathématiques ?
    (Il n'y a pas de précision là-dessus dans l'aide)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Dim ok As Boolean, Formule, valeur, msg
        ok = IsNumeric(12) And IsNumeric("12")
        Debug.Print ok                          ' = Vrai
     
        Formule = "Isnumeric(12)"
        Debug.Print Evaluate(Formule)           'Erreur 2029
     
        valeur = 12
        Formule = "IsNumeric(" & valeur & ")"
        msg = Evaluate(Formule)                 'Erreur 2029
        Debug.Print msg
     
        valeur = "12"
        Formule = "IsNumeric(" & valeur & ")"
        msg = Evaluate(Formule)                 'Erreur 2029
        Debug.Print msg
     
        valeur = "SIN(30*pi()/180)"
        Debug.Print Evaluate(valeur)            'Ok (= 0,5)
        Debug.Print Evaluate("SIN(30*pi()/180)") 'Ok (= 0,5)
    Par avance, merci de vos réponses

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    non c'est pas du sectarisme ... sous 2000 , evaluate ne reconnait pas non-plus isNumeric.. ( isDate aussi..) , j'ai pas trouvé de liste de fonctions reconnues par Evaluate ..

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Mais, heu... Ça me parait normal. Evaluate sert à évaluer une expression mathématique, et pas à interpréter une commande VB, VBA, ou autre.
    En gros, + - * / , fonctions trigo, puissances, racines, logarithmes...
    Ou alors je dis une bêtise...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci pour vos réponses.

    Megaccel, où as-tu trouvé "Evaluate sert à évaluer une expression mathématique". Pas que je veuille vérifier, mais... j'aimerais bien savoir si on peut affecter une variable à une formule, autre que mathématique, donc...
    Et là où tu as trouvé "ça", il y a peut-être une réponse à ma question.

    Merci

    A+

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    evaluate renvoie aussi des valeurs logiques
    evaluate ("nomdevar=nomdevar2")

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci random.

    Je laisse ma question le temps que megapixel trouve la réponse à ma dernière question

    A+

  7. #7
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ha la la, si on ne peut même plus s'autoriser un petit resto de temps en temps... Vous partez 2 minutes, et on vous poignarde...
    Non, j'avoue que mon apprentissage de VBA comporte une bonne partie de transmission orale, et effectivement, je n'ai pas la moindre référence écrite à ce que j'ai avancé. Mais toutes les fois où j'ai utilisé EVALUATE, c'était pour des calculs.
    J'adresse donc toutes mes plus plates confuses à Ousk.

    Minixel

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    je n'ai pas la moindre référence écrite à ce que j'ai avancé
    T'es pardonné. Je crois que je vais mettre résolu avant de partir, ce soir...

    A+

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonsoir,
    ouskel'n'or, j'ai essayé ton code (pour voir le résultat, j'ai remplacé Debug.Print à la fin du code par Range("A1") = et celà me donne 0.5

    jpleroisse

  10. #10
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par leroissejp
    Bonsoir,
    ouskel'n'or, j'ai essayé ton code (pour voir le résultat, j'ai remplacé Debug.Print à la fin du code par Range("A1") = et celà me donne 0.5

    jpleroisse
    bravo ... debug.print donne aussi le même résultat ...

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Re,
    Bbil, je sais, mais chez moi Debug.Print ne donne aucun résultat. Pourquoi, je n'en sais rien. Alors j'ai mis A1. C'était juste pour dire à ouskel'n'or que son code fonctionnait sous Excel 97.

    jpleroisse

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    oui je me suis douté que tu connaissais pas debug.print ... , debug.print affiche ces résultat dans fenêtre exécution .., Sous VBA (ou VB) Menu Affichage , Fenêtre exécution ... ( CTRL G)



    le fenêtre exécution gagne à être connue... tu peu par exemple y taper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?Evaluate("SIN(30*pi()/180)")
    et le fameux résultat la ligne en dessous ... 0.5...

    tu peu aussi en mode debug..., lorsque ton programme bloqué sur un point d'arrêt ... modifier la valeur de variable ..en fait tu peu ewxécuter dans la fenêtre exécution n'importe qu'elle ligne de commande ...

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello leroissejp,
    Tu mets :
    j'ai essayé ton code (pour voir le résultat, j'ai remplacé Debug.Print à la fin du code par Range("A1") = et celà me donne 0.5
    Tu parles de quelle ligne de code ? Toutes les lignes sur evaluate(sin...) on fonctionné. Le pb survient quand la fonction n'est pas numérique. Ce qui m'étonne c'est que ça marche pour les boolean (cf - Random) mais pas sur Isnumeric qui pourtant en renvoie un.

    Je poursuis ma lecture de vos réponses...

    Voilà, j'ai fini... Merci à tous... mais n'ai pas trouvé de réponse supplémentaire. Vous croyez que je déleste ?

    A+

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Evaluate permet aussi d'accéder à une variable en composant son nom.
    Exemple:
    J'ai 3 variables
    Var1
    Var2
    Var3
    Je peux y accéder en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evaluate("Var" & intIndex)
    pour intIndex de 1 à 3

    Ce n'est pas très utile car il est préférable d'utiliser un tableau pour cet usage mais la question d'un accès indirect à une variable revient souvent sur le forum.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci Alain,
    Cette question avait effectivement été posée mais comme toi, je préfère le tableau. Mais peut-être existe-t-il un usage auquel je n'ai pas pensé (?)

    A+

  16. #16
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ça marche, ça!!?!!??
    Incroyable! Alors il est possible de reconstruire un nom de variable, pour accéder à son contenu. C'est vrai que cette question a été posée il n'y a pas très longtemps, et tout le monde a été d'accord pour dire que ce n'était pas possible, et qu'il fallait passer par un tableau...

  17. #17
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par AlainTech
    Evaluate permet aussi d'accéder à une variable en composant son nom.
    Exemple:
    J'ai 3 variables
    Var1
    Var2
    Var3
    Je peux y accéder en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evaluate("Var" & intIndex)
    pour intIndex de 1 à 3

    Ce n'est pas très utile car il est préférable d'utiliser un tableau pour cet usage mais la question d'un accès indirect à une variable revient souvent sur le forum.
    ? ça ne marche pas chez-moi (Excel 2000..) , => ERREUR 2029

  18. #18
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    il me semble que l'erreur 2029 vient d'un probléme de format pas en texte ?

    Igloobel

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est ce que dit error(2029) ? (je n'ai pas regardé) Pourtant, que la variable soit une valeur ou un chaîne la représentant, j'ai la même erreur.

    tout le monde a été d'accord pour dire que ce n'était pas possible
    Erreur Pasmoilsel, il me semble bien qu'AlainTech avait déjà fait cette réponse...

    A+

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    J'ai aussi l'erreur sur une variable...

    Je cherche
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PPT-2003] Utilisation Evaluate VBA PPT
    Par benoxy dans le forum VBA PowerPoint
    Réponses: 6
    Dernier message: 05/03/2010, 09h39
  2. [XL-2007] Recherche VBA, fct Evaluate
    Par Nemesis7285 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/01/2010, 15h58
  3. [VBA] Evaluation d'expression (PHP)
    Par Scritch852 dans le forum Général VBA
    Réponses: 13
    Dernier message: 22/03/2007, 17h35
  4. 2003 VBA: Evaluer une variable dans OpenForm
    Par Jean_Benoit dans le forum Access
    Réponses: 3
    Dernier message: 24/02/2007, 23h01
  5. VBA Excel - Evaluation formule
    Par mimic50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2006, 17h34

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