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 :

Evaluate - Tester si une formule renverrait une erreur Excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut Evaluate - Tester si une formule renverrait une erreur Excel
    Bonjour,

    Je n'arrive pas à saisir pourquoi ce code me renvoie "Faux" alors la formule provoque une erreur #VALEUR! dans Excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox IsError(Evaluate("=D70:N70"))
    De même sans le signe égal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox IsError(Evaluate("D70:N70"))
    Comment tester si une formule renverrait une erreur dans Excel?

    Cordialement

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    une formule renvoie son resultat lors de l'evenement calculate d'un sheet forcement tu aura toujour faux en l'etat tu test un string

    il te faut faire l'operation en vba pur

    pour etre encore plus precis il est bien pratique de regarder dans les variables local ce que renvoie tes vazriables
    ou tester en vba
    comme suit
    quand tu aura vu le resulat de ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox TypeName((Evaluate("=D70:N70")))
    tu saura pourquoi ca te donne faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox IsError(Evaluate("=D70:N70"))
    et surtout tu saura pourquoi ca te renvoie #VALEUR!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Merci pour ta réponse Patrick, même si j'avoue avoir du mal à comprendre.

    Le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox TypeName((Evaluate("=D70:N70")))
    est Range.

    Personnellement, je me serais attendu à avoir un type Error (oui, je sais pourquoi "=D70:N70" renvoie VALEUR!, merci ).

    Citation Envoyé par patricktoulon Voir le message
    une formule renvoie son resultat lors de l'evenement calculate d'un sheet forcement tu aura toujour faux en l'etat tu test un string

    il te faut faire l'operation en vba pur
    C'est ce que j'essaie de faire. Je veux tester la formule dans VBA avant de la mettre dans une cellule.

    En fait, j'aimerais pouvoir facilement enlever des fonctions SOMME quand elles ne sont pas nécessaires, mais les conserver lorsqu'elles le sont. Ainsi, j'aimerais conserver "=SOMME(D70:N70)", mais transformer "=SOMME(D70)" en "=D70. Seulement voilà, je n'aimerais pas non plus avoir "=D70:N70". D'où le test.

    Une idée?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu as pris un mauvais exemple avec =D70:N70
    Met cette formule sur feuille, puis le curseur dans l'édition des formules en haut et fais F9 pour l'évaluer.
    Tu obtiens {0\0\0\0\0\0\0\0\0\0\0}
    Cette formule n'est pas en erreur, c'est juste qu'excel ne peux pas afficher une matrice dans une cellule.
    Fais tes tests avec =1/0, là tu la verras l'erreur, même en vba.
    eric

  5. #5
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Bonjour Eric,

    C'est vrai que c'est bizarre. Je n'avais jamais vu ce type de formule renvoyer autre chose qu'une erreur. Mais dans une feuille vide, avec "=D70:N70", j'obtiens 0, et 1 si la plage est remplie de 1. J'écris "="F6:H6" dans la cellule à côté et j'obtiens #VALEUR!

    ... sauf que je n'ai pas choisi "=D70:N70", c'est un cas pratique

    PS: j'ai bien fait les tests indiqués, mais pour moi, #VALEUR! est bien une erreur Excel à éviter, même si on pourrait représenter le contenu de la formule dans une matrice.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Dédé6621 Voir le message
    Mais dans une feuille vide, avec "=D70:N70", j'obtiens 0, et 1 si la plage est remplie de 1.
    De mon côté j'obtiens l'erreur dans les deux cas, plage vide ou remplie !

    La méthode Evaluate  - non expliqué dans sa documentation -  peut agir comme une formule matricielle
    expliquant ainsi la différence parfois possible avec une simple formule et là,
    pas d'autre choix de tester le résultat dans une cellule …

    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par Dédé6621 Voir le message
    Je n'arrive pas à saisir pourquoi ce code me renvoie "Faux" alors la formule provoque une erreur #VALEUR! dans Excel
    C'est normal car ce n'est pas toujours tout à fait la même chose entre une cellule et une évaluation
    comme tu peux déjà le voir toi-même côté VBE dans la fenêtre Variables locales après avoir exécuté

    V = Evaluate("=D70:N70")     que constates-tu donc concernant le contenu de cette variable V ?

    Évidemment il est bien plus simple de tester le résultat d'une cellule contenant une formule …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  8. #8
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Bonjour Marc!

    Citation Envoyé par Marc-L Voir le message
    V = Evaluate("=D70:N70")     que constates-tu donc concernant le contenu de cette variable V ?
    V devient une variable tableau Variant à deux dimensions, la première se rapportant à la ligne 70 (1 to 1) et la deuxième se rapportant aux 11 colonne de D à N (1 to 11) (je suis en base 1). Intéressant, merci!

    Mais du coup, n'y a-t-il pas un moyen de tester si une formule entraînerait une erreur dans Excel sans passer par Excel?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Imbriquer une formule dans une formule à l'aide de l'outil Insertion de fonction
    Par Philippe Tulliez dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/08/2014, 11h21
  2. [XL-2007] Savoir si une cellule est une formule ou une valeur
    Par Syvolc dans le forum Excel
    Réponses: 3
    Dernier message: 23/06/2014, 14h50
  3. [XL-2010] Formule : attribuer une formule dans une cellule
    Par popi33370 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2014, 18h06
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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