Erreur dans la gestion des erreurs !!

  • Initiateur de la discussion Initiateur de la discussion Philippe
  • 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 !

Philippe

XLDnaute Occasionnel
Bonsoir lr forum,

j'ouvre depuis une appli des classeurs excel situés dans 'Mes documents', afin d'éviter les messages d'erreur lorsque le classeur est déjà ouvert, ou inexistant, j'ai écrit cette petite routine:

Private Sub CommandButton1_Click()
Application.DisplayAlerts = False
Dim nom As String, nom1 As String
nom = [A3] & '.xls'
On Error GoTo paouvert
Workbooks(nom).Activate
Application.DisplayAlerts = True
Exit Sub
paouvert:
On Error GoTo 0
On Error GoTo toujourspas
nom1 = 'C:\\Mes documents\\' & nom
Workbooks.Open (nom1)
Application.DisplayAlerts = True
Exit Sub
toujourspas:
MsgBox 'Le classeur ' & nom & ' n'existe pas !!!'
Application.DisplayAlerts = True
On Error GoTo 0
End Sub


Or ça plante à la seconde gestion d'erreur quand le classeur n'existe pas, je récolte une erreur 1004, comme si le second 'on error goto toujourspas' n'était pas pris en compte...
Je ne vois pas ce qui coince dans mon code...

Merci de vitre aide.

A+
Philippe
 
Bonsoir Philippe,

L'aide VBA dit : 'Si une erreur se produit alors qu'un gestionnaire d'erreurs est actif (c'est-à-dire entre la ligne où survient une erreur et une instruction Resume, Exit Sub, Exit Function ou Exit Property), le gestionnaire d'erreurs de la procédure en cours ne peut gérer l'erreur.'.
Autrement dit, on ne peut pas gérer une erreur alors que la gestion de l'erreur précédente n'est pas terminée (entre 'paouvert:' et 'Exit Sub', on ne peut donc pas introduire de 'On Error GoTo toujourspas').

Tu peux peut-être essayer le code ci-dessous à la place de ta procédure :
Private Sub CommandButton1_Click()
Dim nom As String
Dim
Classeur As Workbook
      nom = Range('A3').Value & '.xls'
      On Error Resume Next
      Set Classeur = Workbooks(nom)
      If Not Classeur Is Nothing Then
            Classeur.Activate
      Else
            Workbooks.Open 'C:\Mes documents\' & nom
            If ActiveWorkbook.Name <> nom Then MsgBox 'Le classeur ' & nom & ' n'existe pas !!!'
      End If
      On Error GoTo 0
End Sub
Cordialement,
 
Salut MDF,

merci pour le tuyau, je vais essayer ta proc. demain matin, ce qui me trouble cependant c'est que j'avais introduit un 'on error goto 0' qui aurait du interrompre le traitement d'erreur... il y a qqe chose qui m'échappe là...

Bon je vais dormir....

A demain
philippe
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
448
Réponses
5
Affichages
900
Retour