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-E] Structure de On Error


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut [VBA-E] Structure de On Error
    Bonjour tous le monde,

    Voici mon problème.
    J'ai un bout de code qui ouvre un classeur Excel si le chemin est correct et qui, si le chemin n'est pas correct, ouvre une boite de dialogue qui me permet de spécifier un nouveau chemin:
    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
     
    ' Ouverture du classeur "Archives"
    On Error GoTo ErrorHandler
     
    Again:
    Set obj = Workbooks
    cheminarc = Feuil1.path + "\Archives.XLS"
    obj.Open cheminarc
    Workbooks("Archives.xls").Activate
     
    ErrorHandler:
    Conf.Show
    GoTo Again
     
     
    ' Recupération du nombre de feuilles du classeur "Archives"
    nbshmax = Workbooks("Archives.xls").Sheets.Count
    J'aimerais que dans le Error Handler s'executent ces deux lignes de code:
    Or seule la première s'éxecute , comment puis je faire faire pour mettre l'équivalent de parenthèses ou qqc comme çà?...

    Merci.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je ne vois pas d'err.clear mais, ce que je vois surtout, c'est que, erreur ou pas de surcroît, je vais toujours passer par l'étiquette Again, arriver (erreur ou non) à l'étiquette ErrorHandlet et... passer par la 1ère instruction qui suit "conf.show"... pour aller à l'Etiquette Again... et recommencer ainsi à l'infini !!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    Justement, c'est tout l'objet de ma question, je veux que l'instruction
    soie comprise dans le ErrorHandler comme ça dès qu'il n'y a plus d'erreur le programme continu après le Goto Again

    Le problème est de pouvoir faire éxecuter les 2 instructions
    quant il y a erreur et de passer directement à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbshmax = Workbooks("Archives.xls").Sheets.Count
    s'il n'y a pas d'erreur.

    Quant au err.clear, je ne comprends pas ce que c'est.

    Merci quand même...

  4. #4
    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 oui, jmfmarques a (encore) raison:
    Tu dois séparer tes étiquettes du reste du code "principal". Là tu passes dans ton ErrorHandler même si tu n'as pas d'erreur.
    Tu dois avoir une structure du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MaProcedure()
       On Error Goto ErrorHandler
       ... du code...
       Exit Sub
    Error Handler:
       ...Code en cas d'erreur
    End Sub

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Le err.cleat n'existe peut-être pas sous VBA. Mais alors, sous VBA, ce doit être err = 0 ou error = 0... ou quelque chose comme çà... pour éviter de continuer l'appli avec une erreur non nulle.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    OK, autant pour moi jmfmarques, je n'avais pas compris le fonctionnement exact de On Error et des étiquettes.

    Je vais donc essayer comme tu l'as dit Megaxel.

    Merci à tous les deux.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Par défaut
    C'est vrai que là ça marche beaucoup mieux.

    Merci et bonne fin de journée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/10/2014, 17h46
  2. [VBA-E]Structure conditionnelle sur plusieurs variables
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2007, 14h30
  3. VBA EXCEL : Probleme avec On Error
    Par izalec dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2006, 10h23
  4. [VBA-E] Problème de tableau Error 5992
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2006, 11h58
  5. [VBA-A] Structure 'Et puis'
    Par Kinian dans le forum VBA Access
    Réponses: 15
    Dernier message: 20/05/2006, 10h28

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