XL 2016 Gestion des erreurs

  • Initiateur de la discussion Initiateur de la discussion KTM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

KTM

XLDnaute Impliqué
Bonjour chers tous
Jai une macro l'intérieur de laquelle on a un bout de code pour tester l'existence de feuilles.
Jai essayé de gérer les erreurs au cas ou l'une de ces feuilles n'existerait pas mais cela ne fonctionne pas.
Jai besoins d'aide...
Merci...
VB:
                                Set classeur = Application.Workbooks.Open(fichie)
                                Application.ScreenUpdating = False
                                On Error GoTo Er:
                                Set wk1 = classeur.Worksheets("PNLS_CD")
                                Set wk2 = classeur.Worksheets("PNLS_PEC")
                                Set wk3 = classeur.Worksheets("PNLS_PTME")
Er:
                                Application.DisplayAlerts = False
                                classeur.Close SaveChanges:=False
                                shF.Activate
                                Application.ScreenUpdating = True
                                MsgBox "Vous n'avez pas Choisi le bon Fichier...!!" & Chr(13) & Chr(10) & _
                                "Veuillez Verifier", 48
                                Exit Sub
 
Bonjour KTM, Danielco,
ou encore ainsi :
VB:
Sub BonFichier()
Set classeur = Application.Workbooks.Open(fichier)
If IsError(Sheets("PNLS_CD")) Or IsError(Sheets("PNLS_PEC")) Or IsError(Sheets("PNLS_PTME")) Then
    MsgBox "Vous n'avez pas Choisi le bon Fichier...!!" & Chr(13) & Chr(10) & _
            "Veuillez Verifier", 48
    Exit Sub
End If

' arrivé ici, le fichier ouvert est correct,
' ... alors suite de la macro
End Sub
 
Bonjour KTM, Danielco,
ou encore ainsi :
VB:
Sub BonFichier()
Set classeur = Application.Workbooks.Open(fichier)
If IsError(Sheets("PNLS_CD")) Or IsError(Sheets("PNLS_PEC")) Or IsError(Sheets("PNLS_PTME")) Then
    MsgBox "Vous n'avez pas Choisi le bon Fichier...!!" & Chr(13) & Chr(10) & _
            "Veuillez Verifier", 48
    Exit Sub
End If

' arrivé ici, le fichier ouvert est correct,
' ... alors suite de la macro
End Sub
Jai testé mais une erreur se produit si les feuilles n'existent pas.
Un bug sur cette ligne
VB:
If IsError(Sheets("PNLS_CD")) Or IsError(Sheets("PNLS_PEC")) Or IsError(Sheets("PNLS_PTME")) Then
 
bonjour,
c'est bien de vouloir gérer les erreurs, mais avant tout on prend les précontions qui s'imposent pour éviter d'avoir des messages d'erreur.

un dir permet de vérifier l'existence du fichier.

si tu veux tester le gestionnaire d'erreur
Code:
Sub test_erreur()
On Error GoTo Gestion_Erreur
Err.Raise 1664, "APP", "Vas donc boire une bière à ma santé !"
 
Exit Sub
Gestion_Erreur:
MsgBox "Err : " & Err.Number & vbCrLf & "Source : " & Err.Source & vbCrLf & Err.Descr
End Sub
 
Dernière édition:
Re,
Un bug sur cette ligne
Trop rapide et non testé. Désolé. 😢

Testé et vérifié :
Code:
Sub BonFichier()
On Error Resume Next
If IsError(Sheets("PNLS_CD")) Or IsError(Sheets("PNLS_PEC")) Or IsError(Sheets("PNLS_PTME")) Then
    If Err.Number = 9 Then
        MsgBox "Vous n'avez pas Choisi le bon Fichier...!!" & _
                Chr(13) & Chr(10) & "Veuillez Verifier", 48: Exit Sub
    End If
End If

' arrivé ici, le fichier ouvert est correct,
' ... alors suite de la macro
End Sub
 
Hello,

une version sans besoin de la gestion d'erreur
VB:
Sub Cherche_Feuilles()
    
    Dim Feuille As Worksheet
    Dim Nb_Feuille_Trouve As Integer
    Dim i As Long

    Const fichieR as string = "Nom_du_fichier.xlsx"
    Set classeur = Application.Workbooks.Open(fichieR)
    Application.ScreenUpdating = False
    
    ' Noms des feuilles à vérifier, à adapter
    Dim Noms_Attendus(1 To 3) As String
    Noms_Attendus(1) = "PNLS_CD"
    Noms_Attendus(2) = "PNLS_PEC"
    Noms_Attendus(3) = "PNLS_PTME"

    Nb_Feuille_Trouve = 0

    ' Parcourir toutes les feuilles du classeur
    For Each Feuille In classeur.Sheets
        For i = LBound(Noms_Attendus) To UBound(Noms_Attendus)
            If StrComp(Feuille.Name, Noms_Attendus(i), vbTextCompare) = 0 Then
                Nb_Feuille_Trouve = Nb_Feuille_Trouve + 1
                Exit For
            End If
        Next i
    Next Feuille

    If Nb_Feuille_Trouve <> UBound(Noms_Attendus) Then
        MsgBox "Vous n'avez pas Choisi le bon Fichier...!!" & Chr(13) & Chr(10) & _
        "Veuillez Verifier", 48
        Exit Sub
    End If

' suite de la macro

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour