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 :

Pb avec Application.WorksheetFunction.IfError [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 35
    Par défaut Pb avec Application.WorksheetFunction.IfError
    Bonjour a tous,

    Ma petite sub ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Exemple()
    a = 10
    b = 2
     
    ma cellule = Application.WorksheetFunction.IfError((a/b),0)
    End Sub
    Dans ce cas .... tout va bien !!!

    Mais si je remplace par b= 0, j'ai un message d'erreur ...
    Erreur d'execution '11':
    Division par zéro
    Heu .... c'est bien pour cela que je veux utiliser la fonction IfError .....
    Quelqu'un aurait une explication ???
    Merci

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bombar Voir le message
    Dans ce cas .... tout va bien !!!
    J'espère que dans la vraie macro, tu as autre chose que "ma cellule", sinon je ne vois pas comment ça pourrait fonctionner.

    Pour ce qui est de ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_cellule = Evaluate("IFERROR(" & a & "/" & b & ",0)")

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    La méthode IfError n'évalue pas une expression, mais une valeur :
    - celle de l'expression qui lui est éventuellement soumise,
    - plus généralement et fréquemment, la valeur (une erreur Excel identifiable) retournée par une formule Excel

    Elle ne saurait déterminer si l'expression elle-même et source ou non d'une erreur, sauf si cette erreur est transposée en erreur Excel (résultat de formule).

    Il t'appartient donc de traiter ton expression elle-même par une gestion d'erreur VBA.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 35
    Par défaut
    Merci à tous les deux pour votre réponse.

    Menhir : La formule fonctionne parfaitement !!!

    unparia : Effectivement, je mélangeais un peu tout .....

  5. #5
    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 à tous,

    tu passes inutilement par les fonctions excel, ça peut se faire directement en vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_cellule = IIf(b = 0, 0, a / b)
    eric

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ramener le résultat à 0 dans un tel cas ne peut que me faire bondir.
    Ce serait par exemple oser considérer (et traiter comme tels) que 0/3 et 3/0 ont la même valeur ....

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

Discussions similaires

  1. [XL-2010] Pb avec Application.IfError
    Par wkrystof1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2017, 08h23
  2. [Toutes versions] Problème avec Application.WorksheetFunction
    Par lisamano dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/04/2017, 10h55
  3. Nettoyage de string avec Application.WorksheetFunction.clean
    Par Gorzyne dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/02/2013, 11h10
  4. Réponses: 1
    Dernier message: 01/01/2006, 19h53
  5. problème avec Application->ProcessMessages()
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2005, 10h27

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