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]Gestion d'erreur


Sujet :

Macros et VBA Excel

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut [VBA-E]Gestion d'erreur
    Bonjour j'ai un problème pour gérer une éventuelle erreur de l'utilisateur dans mon programme

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    On Error GoTo Err2:
    Windows(Fichier_MAJ).Activate
    Workbooks(Fichier_MAJ).Sheets("Etude").Select
    Set Plage2 = Workbooks(Fichier_MAJ).Worksheets("Etude").Range("A4:A" & Range("A4").EntireColumn.SpecialCells(xlCellTypeConstants).Count)
     
    Err2:
    Message = "Le fichier " & Dir(Fichier_MAJ) & " que vous venez de séléctionner ne semble pas être conforme ! "
    Style = vbExclamation
    Titre = "Ouverture fichier impossible..."
    Reponse = MsgBox(Message, Style, Titre)
    Exit Sub
    Lorsque je rentre ce code, il m'affiche automatiquement la msgbox du message d'erreur.
    Mais si je retire la gestion de l'erreur, mon code s'éxecute correctement....je ne vois pas
    trop ce qui se passe! Si quelqu'un a une idée....

    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
    Points : 4 674
    Points
    4 674
    Par défaut
    il m'affiche automatiquement la msgbox du message d'erreur
    Et... où lui dis-tu de ne pas passer par l'étiquette Err2 s'il n'y a pas d'erreur ?... vois pas !....

  3. #3
    Membre expérimenté 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
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui, il faut mettre un
    ou un
    avant d'arriver à l'étiquette, sinon, le code se déroule naturellement et passe dans ce bout de code.

  4. #4
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Non s'il n'y a pas d'erreur il ne doit pas passer par l'étiquette....enfin si c'est comme Access.... l'étiquette sert seulement s'il y a une erreur et le exit sub doit se trouver dans l'étiquette. Si je mets un exit sub après le on error goto err: , il sortira de la procédure à chaque fois

  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
    Points : 4 674
    Points
    4 674
    Par défaut
    Tu persistes et... tu signes !
    Dans ce cas ... continues donc à passer systématiquement par l'étiquette Err2, ma foi

  6. #6
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    ok mais si j'applique votre méthode, il m'est impossible de continuer la suite de ma procédure que ce soit dans le cas d'une erreur ou non vu que le exit sub lui va bien etre lu !

  7. #7
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Allons : montre-nous donc où tu as placé ton exit sub exactement, ainsi que le reste (s'il y en a) de ta procédure
    C'est juste une question de stratégie et de réflexion !
    si tu as à exécuter du code dans ta procédure après, l'exit sub devra être remplacé par l'envoi vers une 2ème étiquette, par exemple !
    Mais j'aimerais vraiment voir la totalité de la procédure (jusqu'au End Sub) car je suis à peu près certain de ce qu'en plus, on pourrait éviter ces vilains GoTo !

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Mut
    Non s'il n'y a pas d'erreur il ne doit pas passer par l'étiquette....enfin si c'est comme Access.... l'étiquette sert seulement s'il y a une erreur
    qu'est-ce qu'il est gentil, Access

  9. #9
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Windows(Fichier_MAJ).Activate
    Workbooks(Fichier_MAJ).Sheets("Etude").Select
    Set Plage2 = Workbooks(Fichier_MAJ).Worksheets("Etude").Range("A4:A & Range("A4").EntireColumn.SpecialCells(xlCellTypeConstants).Count) 
     
    Windows(Fichier_Source).Activate
    Workbooks(Fichier_Source).Sheets("liste").Select
    Set Plage = Workbooks(Fichier_Source).Worksheets("liste").Range("C3:C" & Range("C3").EntireColumn.SpecialCells(xlCellTypeConstants).Count)
    Voila....si le classeur contient bien la feuille "Etude" ça fonctionne mais sinon ça fait l'erreur. Je voudrais gérer cette erreur....

  10. #10
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Ami mut,

    Lorsque j'ai écrit :
    Mais j'aimerais vraiment voir la totalité de la procédure (jusqu'au End Sub)
    ,
    ce qui figurait à propos de tout ce qu'il y a avant le End sub (ce qui est en gras ci-dessus) avait et a une énorme importance !
    Le code que tu fournis là ne va pas jusqu'au End Sub et ne permet pas de savoir ce qui se passe après la gestion de l'erreur !

  11. #11
    Membre expérimenté 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
    Points : 1 405
    Points
    1 405
    Par défaut
    Je retombe presque par hasard sur ce post.
    Mut, pour utiliser le On Error, tu dois transformer la structure.
    Tu as en général, sans le On Error:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MaProc ( )
       ...Tout ton code ...
       ...la fin de ton code .
    End Sub
    Et bien tu dois avoir, avec un On Error...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MaProc ( )
       On Error Goto GestionErreur
       ...Tout ton code ...
       ...la fin de ton code .
       Exit Sub
    GestionErreur:
       Ce que tu veux faire en cas d'erreur...
    End Sub
    Comme tu le vois, l'étiquette est COMPLETEMENT à la fin de la procédure, ce qui te permet d'exécuter TOUT ton code s'il n'y a pas d'erreur.

    Maintenant, pour ton cas d'un onglet qui n'existe pas, une fonction a été posté 12654 fois, qui permet de vérifier l'existence, et de renvoyer un booléen:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function LaFeuilleExiste(ByVal NomOnglet As String) As Boolean
        Dim i As Integer
        LaFeuilleExiste = False
        For i = 1 To ActiveWorkbook.Worksheets.Count
            If ActiveWorkbook.Worksheets(i).Name = NomOnglet Then _
                LaFeuilleExiste = True
        Next i
    End Function

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Megaxel
    Maintenant, pour ton cas d'un onglet qui n'existe pas, une fonction a été posté 12654 fois, qui permet de vérifier l'existence,...
    non 12655 ... on la eu hier aussi

  13. #13
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    12656 avec cette fois-ci

  14. #14
    Membre expérimenté 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
    Points : 1 405
    Points
    1 405
    Par défaut
    Heyyy, les félins (Thierry, bbil...), on se calme...
    Sinon, les volatiles (Ousk', moi...), qui se mettent rarement en colère, vont relancer la bonne vieille méthode du goudron et des plumes (on a en plein pour pas cher!!) pour punir les membres qui font répéter N fois les mêmes choses...


    Et dans la liste des volatiles, on peut mettre jmfmarques: il a des plumes aussi, maintenant...

  15. #15
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    ok le coup du exit sub après le bout de code je croyais que ça allait arrèter toute ma procédure vu que j'avais mis l'étiquette juste après et non à la fin ! désolé pour ne pas avoir compris avant !

    Merci à tout le monde

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

Discussions similaires

  1. [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2008, 20h42
  2. [vba-e] Gestion D'erreur Dans Un Inputbox
    Par KKshi666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/05/2007, 09h39
  3. [VBA-E]Gestion d'erreurs multiple
    Par icetechnik dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/04/2006, 22h35
  4. [VBA-E] Gestion d'une erreur #N/A
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2006, 20h17
  5. [VBA-E] Pb sur gestion des erreurs
    Par micoscas dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 08/03/2005, 17h08

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