Boucle sur fichiers dont le nom est différent

Bonjour ,

J'ai trouvé ce code sur le site de Boisgontier, pour consolider plusieurs fichiers dont le nom commence par vendeur.

Mon souci est que les noms de mes fichiers sont différents (ex: fichier1.xlsx, depense.xlsm, recette.xls).

Et que les copies se fassent sur la même feuille, chaque fichier à la suite de l'autre. Pour chaque fichier, il n'y a qu'une seule feuille à recopier, toujours la feuil1.

Auriez-vous une solution. En vous remerciant par avance.

Sub consolideClasseurs()
  ChDir ActiveWorkbook.Path
  Set classeurMaitre = ActiveWorkbook
  sup
  nf = Dir("vendeur*.xls")
  Do While nf <> ""
      Workbooks.Open Filename:=nf
      Sheets(1).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
      classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = nf
      Workbooks(nf).Close False
      nf = Dir     ' classeur suivant
  Loop
  Sheets(1).Select
End Sub
Sub sup()
  Application.DisplayAlerts = False
  If Sheets.Count > 1 Then
    Sheets("Accueil").Move before:=Sheets(1)
    Sheets(2).Select
    For i = 2 To Sheets.Count
      ActiveSheet.Delete
    Next i
  End If
End Sub

Salut CP4,

Si tes fichiers à regrouper sur une seule et même feuille sont dans le même dossier, alors je pense que lui mieux serait de :

1) Lister sur une colonne le nom des fichiers (fichier1.xls // recette.xls etc...)

2) Supprimer de cette liste de nom fichier ceux qui ne t’intéresse pas (par exemple, ceux ne comprenant pas le mot "Vendeur" dans le nom)

3) Boucler sur la liste de fichier qu'il te reste dans ta colonne pour les regrouper

Si cette proposition te conviens, je peux te fournir les codes

Restant à dispo

Bonjour Juice ,

Très gentil de ta part. J'accepte toute proposition.

Mais serait-il possible d'intégrer le nom des fichiers dans le code.

Et de boucler sur ces derniers.

En fait, c'est ce que je voudrais apprendre à faire:

Mettre le nom des fichiers dans une variable et l'utiliser pour faire une boucle.

Du genre for each cellules dans une plage.

Je sais parcourir une plage de cellules d'une feuille.

Mais là, je bloque vraiment.

Merci beaucoup. Ta proposition m'intéresse aussi, ça pourrait me servir plus tard.

Re!

Mettre le nom des fichiers dans une variable

Par exemple, si tu veux ouvrir un fichier en ayant intégrer le nom de celui-ci dans une variable :

Sub OpenFile ()
Dim Chemin as string
chemin = "C:\Chemin\Fichier1.xls"
Workbooks.Open Filename:="" & chemin & ""
End sub

Maintenant, pour boucler sur une plage de cellule contenant des noms de fichier :

Sub OpenFiles()
Dim Chemin as string
Dim c, p as range
Set p = range("A1:B10")
For Each c in p
    chemin = c.value
    Workbooks.Open Filename:="" & chemin & ""
Next c
End sub

Avec sa, tu ouvre tout les fichiers dont le chemin + nom + extension sont contenue dans la plage A1 à B10

C'est sa que tu veux faire :0 ?

Merci pour ton retour, pour le second code, j'ai mis le nom de 2 fichiers dans la plage, le code plante.

J'ai conclu que la plage définie doit correspondre aux nombres de fichiers. En effet, si je garde A1:A10 on a une erreur 1004. Comment pallier à cette erreur, si on veut garder cette plage pour y mettre un nombre varié de fichiers. Merci.

Sub OpenFiles()
Dim Chemin As String
Dim c, p As Range
Set p = Range("A1:A10")
For Each c In p
   Chemin = ThisWorkbook.Path & "\" & c.Value
   Workbooks.Open Filename:="" & Chemin & ""
Next c
End Sub

Re!

Alors oui si tu a des cellules qui sont vides dans ta plage A1:B10 tu aura une erreur fichier introuvable.

Pour outrepasser cette erreur, un simple "Si c est égal à rien alors passe au c suivant" :

Sub OpenFiles()
Dim Chemin As String
Dim c, p As Range
Set p = Range("A1:A10")
For Each c In p
   If c <> "" Then
      Chemin = ThisWorkbook.Path & "\" & c.Value
      Workbooks.Open Filename:="" & Chemin & ""
   End If
Next c
End Sub

Restant à dispo

Merci beaucoup pour ton retour. J'avais mis On Error Resume Next, mais je viens de lire sur une page web que ce n'était pas la bonne solution. Ok, merci beaucoup.

Joyeuses fêtes de fin d'année.

Un plaisir

Passe de Joyeuse fête également!

Rechercher des sujets similaires à "boucle fichiers nom different"