Boucle sur fichiers dont le nom est différent Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
C
CP4
Membre fidèle
Membre fidèle
Messages : 219
Appréciations reçues : 3
Inscrit le : 22 mars 2014
Version d'Excel : 2010

Message par CP4 » 21 décembre 2018, 08:23

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
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'140
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 21 décembre 2018, 10:53

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
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
C
CP4
Membre fidèle
Membre fidèle
Messages : 219
Appréciations reçues : 3
Inscrit le : 22 mars 2014
Version d'Excel : 2010

Message par CP4 » 21 décembre 2018, 11:47

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.
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'140
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 21 décembre 2018, 12:17

Re!
CP4 a écrit :
21 décembre 2018, 11:47
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 ?
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
C
CP4
Membre fidèle
Membre fidèle
Messages : 219
Appréciations reçues : 3
Inscrit le : 22 mars 2014
Version d'Excel : 2010

Message par CP4 » 21 décembre 2018, 16:58

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
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'140
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 21 décembre 2018, 17:34

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
1 membre du forum aime ce message.
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
C
CP4
Membre fidèle
Membre fidèle
Messages : 219
Appréciations reçues : 3
Inscrit le : 22 mars 2014
Version d'Excel : 2010

Message par CP4 » 21 décembre 2018, 18:05

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. :p<3:
1 membre du forum aime ce message.
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'140
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 21 décembre 2018, 21:55

Un plaisir :)

Passe de Joyeuse fête également!
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message