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

Access Discussion :

pb avec "On error goto"


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 24
    Points
    24
    Par défaut pb avec "On error goto"
    Bonjour,

    Dans un formulaire je commence mon code avec
    ca marche tres bien.

    Maintenant au cours de l'execution de mon code j'ai des petits blocs (par exemple PRODUCTION qui traite les données liées à la production.
    au debut de chacun de ces petits blocs j'aimerai mettre un systeme de gestion d'erreure "localisée", du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo FinProduction
    le pb est que le code d'erreur générique defint au debut semble "court-circuiter" les autres et si j'ai une erreure dans le bloc PRODUCTION le focus va sur "Fin" et pas sur "FinProduction"

    Y a t'il un moyen de "desactiver" (et reactiver) un tag "on Error"?

    Merci!

    Guillaume

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Pour ré-activer le gestionnaire d'erreurs :


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    ca ne fait rien...

    j'ai un code du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    xxx
     
    on error goto finprod
    xxxx
    finprod:
     
    xxx
     
    on error goto finfact
    xxx
    finfact:
     
    xxx
    Il enregistre bien le premier goto et il repond bien (en cas d'erreure il va à finprod) mais ensuite il ne prend plus en compte les goto suivants (finfact).
    Si je fais sauter le premier goto, il prend en compte le deuxieme.

    Tout se passe donc comme si j'avais droit à "un seul tir" sur la gestion d'erreure.

    Si je met apres le premier "fin" ca ne change rien...

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu peux peut être faire un truc un peu moins propre du genre
    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
     
    public sub xxxxx
    On error goto erreur
    dim flag as byte
    flag=0
    xxx
     
    flag=1
    xxxx
    flag=2
    xxx
     
    erreur : if (flag=0)then goto finprod
               if (flag=1)then goto finfact
               ................
    finprod: .....
    finfact: ......
    Je pense que ça doit répondre à ton problème, même si c moins propre

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Merci guigui,

    c'est vrai que comme ca ca devrait marcher...

    Merci!

    Guillaume

  6. #6
    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
    Points : 4 297
    Points
    4 297
    Par défaut
    on error goto finprod
    gnagnagna
    on error goto fin
    gnagnagna
    exit sub
    :finprod
    gnagangna
    exit sub
    :fin
    gnagnagna
    end ub

  7. #7
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Personnellement, je préfère une seule gestion d'erreurs
    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
     
    on error goto erreurs
     
    ...
    ...
    erreurs:
        select case err
            case xxx
                resume next
            case yyy
                msgbox "Erreur"
                resume next
            case zzz
                msgbox "Erreur"
        end select
    Ok?

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut On Error Goto ... Resume !!!
    Bonjour,

    Dans ton contexte de ton On Error Goto Fin.

    Suite au déclenchement d'une erreur:
    1. l'interpréteur VBA bascule dans un mode "erreur en cours",
    2. l'éxécution du code est déroutée vers l'étiquette Fin.

    Pour que la gestion de nouvelles erreurs puisse se poursuivre "normalement", il faut que l'interpréteur VBA revienne dans un mode "exécution normale", et pour ça il faut utiliser le mot-clef Resume éventuellement suivi, soit du mot-clef Next, soit d'une autre étiquette.

    L'utilisation de Resume permet de dérouter l'éxécution (idem Goto) et surtout de revenir à un mode "éxécution normale" nécessaire pour capturer de nouvelles erreurs.

    Bref, cf. l'aide en ligne de VBA.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    merci pour tout les amis!

    Finalement je m'en suis tiré avec resume next.

    mais sur le fond je ne comprend toujour pas le "triger" d'erreur ne marche qu'une seule fois....

    Guillaume

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par malingue
    mais sur le fond je ne comprend toujour pas le "triger" d'erreur ne marche qu'une seule fois....
    Essaye une deuxième lecture...

    Citation Envoyé par =JBO=
    Pour que la gestion de nouvelles erreurs puisse se poursuivre "normalement", il faut que l'interpréteur VBA revienne dans un mode "exécution normale", et pour ça il faut utiliser le mot-clef Resume éventuellement suivi, soit du mot-clef Next, soit d'une autre étiquette.

    L'utilisation de Resume permet de dérouter l'éxécution (idem Goto) et surtout de revenir à un mode "éxécution normale" nécessaire pour capturer de nouvelles erreurs.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2009, 14h08
  2. problem avec on error goto
    Par br@veknight dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/07/2008, 08h36
  3. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

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