Problème de code avec On Error Goto

  • Initiateur de la discussion Pedro
  • Date de début
P

Pedro

Guest
Bonjour forum,

J'ai un problème avec une macro que je me suis créé. J'ai plusieurs fichiers qui sont nommés d'après la date à laquelle ils ont été créés (fichiernb.xls) et je veux aller lire quelques cellules dans ces fichiers pour me faire un historique. Voici le code que j'ai fait:

For nb = 1 to 50
NomFichier = 'Historiquetaux' & nb
On Error GoTo suite
Workbooks.Open Filename:='path' & NomFichier & '.xls', UpdateLinks:=0

je fais les manipulations que je veux sur mes fichiers et ensuite:

suite:
Next nb

Le problème est le suivant: je n'ai pas de fichier pour tous les valeurs de nb. Donc, je veux que la macro, quand elle essaie d'ouvrir le fichier Historiquetauxnb qui n'existe pas, s'en aille à suite et continue la boucle.

Or, ca marche pour la première fois qu'il rencontre un nom de fichier qui n'existe pas, mais ca ne fonctionne pas pour la deuxième fois. Est-ce qu'un(e) de vous pourrait me diriger dans mes recherches?

Merci de votre aide.

Sincèrement,

Pedro
 
P

Pedro

Guest
Salut michel_m,

J'ai essayé ce que tu m'as proposé mais la méthode On Error GoTo next ne marche pas. Je dis ca dans le sens où même si on est en erreur, la macro ne s'en va pas à next, mais elle passe simplement par dessus l'ouverture de fichier demandée.

Une autre idée peut-être?

Merci pour ton aide,

Pedro
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Pedro, michel_m,

Tu devrais pouvoir essayer comme ça :
Sub Traitement()
Dim NomFichier As String
Dim
Chemin As String
Dim
Nb As Byte
      Chemin = 'C:\\\\\\\\'
      '...
      '...
      For Nb = 1 To 50
            NomFichier = 'Historiquetaux' & Nb
            On Error Resume Next
            Workbooks.Open Filename:=Chemin & NomFichier & '.xls', UpdateLinks:=0
            On Error GoTo 0
            If ActiveWorkbook.Name = NomFichier & '.xls' Then
                  MsgBox 'Fichier ' & NomFichier & ' ouvert !'
                  'je fais les manipulations que je veux sur mes fichiers et ensuite
                  '...
                  '...
            End If
      Next Nb
End Sub
Cordialement,
 

Hellboy

XLDnaute Accro
Bonsoir a tous

Une petite variante au code de mon maître:




Public Sub FihierOuvrir()
Dim bytNB As Byte

Dim
strNomFichier As String, strPath As String
' initialise la commande de continuer quand même si il y a une erreur
On Error Resume Next
For
bytNB = 1 To 50
      strNomFichier = 'Historiquetaux' & bytNB
      Workbooks.Open
Filename:=strPath & strNomFichier & '.xls', UpdateLinks:=0
   
' Condition si il y a erreur
      If Not
Err Then
       
' Pas trouvé d'erreur alors
       
' je fais les manipulations que je veux sur mes fichiers
      Else

       
' Il y avait une erreur, on ré-initialise les propriété de Err a 'zéro'
        Err.Clear
      End If
Next
bytNB
' Invalide dans la procédure en cours tout gestionnaire d'erreurs validé
On Error GoTo 0
' Cela veux dire que tu pourrais en remettr un autre On Error Resume Next entre
' ici et le End Sub
End Sub

Message édité par: Hellboy, à: 23/03/2006 01:25
 
P

Pedro

Guest
Bonjour à vous tous,

Merci infiniment pour votre aide. J'ai essayé le code de MyDearFriend! et ca marche bien. J'ai manqué d'imagination sur ce problème. Ca va m'aider pour les prochaines fois.

Merci encore.

Pedro
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Problème code
Réponses
2
Affichages
368

Statistiques des forums

Discussions
312 338
Messages
2 087 394
Membres
103 537
dernier inscrit
alisafred974