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 :

On Error ne marche plus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut On Error ne marche plus
    Bonjour à tous,

    Je sais, vous allez vous dire encore un qui pense connaitre la gestion des erreurs sous VBA...et puis non mais là je suis vraiment sur un os.
    J'avais un code qui fonctionnait parfaitement et qui ne gère maintenant plus les erreurs
    Avant d'écrire ce titre pour cette discussion et j'ai voulu m'en convaincre en tapant ce code tout simple que tout le monde comprendra:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test_error()
    Dim i As Integer
    Dim code_erreur As Double
    On Error Resume Next
        i = "j essaie de mettre du texte dans une variable de type integer"
        code_erreur = Err.Number
    On Error GoTo 0
    MsgBox code_erreur
    End Sub
    Et bien en exécutant ce code, Excel se comporte comme si il n'y avait pas de "On Error Resume Next" et j'obtiens un message d'erreur "Erreur d'Exécution '13'" plutôt que ma petit boite de dialogue attendue...en forçant l’exécution de la suite du code un espion sur ma variable code_erreur me renvoie bien la valeur 13 donc l'erreur est bien gérable en théorie...
    Si quelqu'un connait une astuce, un paramètre, ou une subtilité qui permet de rendre inactive et surtout de réactiver la gestion d'erreur sous vba, je suis preneur parce que là je sèche. Je suis allé jusqu'à réinstaller Excel mais rien y fait.
    Merci d'avance pour vos réponses

  2. #2
    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,

    Quand tu l'appelles tu n'es pas déjà dans une gestion d'erreur ?
    Tu ne peux pas y faire une autre gestion d'erreur.
    eric

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut
    bah non justement

    ce code est tout seul dans un nouveau fichier Excel...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Général/Arrêt sur toutes les erreurs est probablement coché dans le menu Outils/options du VBE
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    et si tu faisait plutôt comme cela (dans ce cas là i passe en variant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test_error()
    Dim i
        i = 5
        'i = "toto"
        If VarType(i) = vbInteger Then
            MsgBox "La variable est de type integer et vaut : " & i
        Else
            MsgBox "La variable n'est pas du type integer"
        End If
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    [...]
    Je crois que le code donné par Nico n'est là que pour illustrer le problème du on error qui ne fonctionne pas. Pas sûr qu'il voulait qu'on lui donne une autre manière de coder...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,

    En effet Pierre mais je pense que son problème vient du type de sa variable.
    Certaines valeurs de i de doit pas correspondre à un integer dans ses données d'où l'erreur de type 13
    Je cite MS :
    VBA: Message 'Erreur d'exécution13, type incompatible

    Dans un module Visual Basic pour Project, lorsque j'exécute certaines
    instructions où le type d'argument est correct, j'obtiens le message
    d'erreur suivant :
    Erreur d'exécution '13':
    Type incompatible

    Solution :
    Vous passez "effectivement" le mauvais type d'argument.
    Dans ce cas, passer le type d'argument requis.
    Or ici dans son code, i est déclaré en integer, si la donnée en i n'est pas un interger on aura forcément une erreur de type 13.

    Du coup ce que je lui propose est bien plus propre je pense (et il me semble que tu es le 1er à prôner d'éviter les gestion d'erreur quand cela es possible )

    Si les données ne sont pas forcément du type integer, alors le passer en Variant comme je l'ai fait, doit le faire
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  8. #8
    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 Ryu
    C'est à mon avis très délibérément, que Nico_Weppes a déclaré i dans un type qui engendre une erreur. Justement pour créer une démonstration/exemple de "non fonctionnement", sur SA machine *****, de l'instruction On Error Resume Next

    ***** -->> aucun problème de l'espèce sur la mienne

    Je pense qu'il est en effet dans le cas sur lequel Pierre Fauconnier, que je salue, appelle l'attention.

    EDIT : il aurait pu provoquer délibérément n'importe quelle autre erreur (une division par 0, par exemple) pour dénoncer la même "non réaction".

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ryu,

    Relis simplement le message initial pour comprendre le problème de Nico qui est
    Mon code s'arrête sur une erreur malgré le on error resume next
    et pas
    J'ai une erreur de type 13, aidez-moi


    Citation Envoyé par Nico_Weppes Voir le message
    [...]Et bien en exécutant ce code, Excel se comporte comme si il n'y avait pas de "On Error Resume Next"[...]
    Le code qu'il a donné est donc rédigé expressément pour générer une erreur. Nico aurait pu tout aussi bien illustrer son problème avec une division par 0 ou une tout autre erreur. Le type d'erreur n'a ici aucune importance.

    [EDIT] Coiffé au poteau par Jacques, que je salue en retour
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    En effet, j'ai pas bien lu

    Jacques et Pierre

    Edit : je n'ai pas ce problème, pas très évident de trouver quand on est pas en conditions réel, face à Excel et la machine en question
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il est évidant que l'exemple fourni par notre amis n'a pour but que de générer une erreur à coup sur!

    Code aurait été plus parlant! : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    On Error Resume Next
    Err.Raise 1664, "MyAppli", "Mort ou pas mort mise en bière à quinze heures !"
    If Err <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
    End Sub
    il y a plusieurs raison pour que le on error ne marche pas!

    comme l'a dit Pierre l'option d'excel interdit la gestion des erreurs par utilisateur!

    une erreur chasse l'autre , mais là les option d'excel toujours (enfin je pense!)

    une erreur qui menace intégrité d'excel et/ou la mémoire!

  12. #12
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Salut Robert,

    Dans le 3eme cas que tu cites, y a y-il un moyen de le déterminer ?
    Sinon que faut il faire ? Désinstaller et ré-installer Excel ? …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. Projet qui marche sous Eclipse ne marche plus en JAR
    Par leminipouce dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 26/10/2005, 18h59
  2. [SEND TO]Menu contextuel "send to" ne marche plus
    Par Hoegaarden dans le forum Windows XP
    Réponses: 8
    Dernier message: 13/10/2005, 11h41
  3. [FOP] Le generation de PDF ne marche plus
    Par Sherkhan dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 23/03/2005, 08h26
  4. [CR] Mes rapports (.PDF) ne marche plus depuis acrobat 7
    Par theflamme dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/01/2005, 15h21
  5. ma fonction marche plus sur le serveur...
    Par CDRIK dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/10/2004, 04h24

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