Ouvrir des fichiers dans un dossier "volant"

La Vouivre

XLDnaute Occasionnel
Bonsoir les Amis
je viens vous demander de l'aide ,car après une grande recherche sur le forum et d'autres sites,je n'arrive pas à trouver une solution à mon problème, voir fichier joint.
J'ai compilé plusieurs codes pour faire une macro ,qui fonctionne dans le module 1 du fichier nouvelle feuille.

cette macro copier la feuille 1 du fichier mère (j'ai 120 fichiers) dans un fichier "nouvelle feuille" après la feuille 1 et ensuite en faire une synthèse en feuille 1 ,ensuite je referme les fichiers et supprimes les feuilles copier sur le fichier "nouvelle feuille", et conserve que la feuille synthèse

le problème:
Ouvrir plusieurs fichiers en même temps qui sont tous dans un même dossier

J'ai un dossier " copie fichier" qui se trouve dans l'arborescence suivante
("O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\ ")

j'ai trouvé le code pour ouvrir un fichier
Workbooks.Open ThisWorkbook.path & "\fichier mere1.xlsx"

si je veux ouvrir plusieurs fichiers je dois recopier la ligne en changeant le nom du fichier mère à chaque fois,
mais j'ai environ 120 fichiers ,et je ne comprends pas comment faire une boucle pour ouvrir tous les fichiers d'un dossier en même temps.
De plus, ce dossier va migrer sur plusieurs postes,donc pas forcément le même chemin .
Pouvez-vous m'indiquer une solution pour faire une boucle pour ouvrir tous les fichiers dans un dossier ?
et une pour les refermer en fin de macro
Ce dossier sera toujours "copie fichier"
J'ai mis dans un module 2 du fichier "nouvelle feuille" les recherches que j'ai trouvées, si cela intéresse quelqu'un .
Par avance merci pour votre dévouement
Bonne soirée à tous
 

Pièces jointes

  • Nouveau Archive WinRAR ZIP.zip
    61.7 KB · Affichages: 25
  • Nouveau Archive WinRAR ZIP.zip
    61.7 KB · Affichages: 29
  • Nouveau Archive WinRAR ZIP.zip
    61.7 KB · Affichages: 26

camarchepas

XLDnaute Barbatruc
Re : Ouvrir des fichiers dans un dossier "volant"

Bonsoir ,

Attention , ouvrir tous les fichiers en même temps peut provoquer un débordement mémoire .

Il faudrait voir ce que donne le code suivant

do

fichier = dir("L:\MACRO\copie fichier\*.xlsx")

msgbox fichier

loop until fichier =""
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

Bonsoir mon Amis CAMARCHEPAS
Merci beaucoup de vous intéresser à mon projet , après essais sur le fichier le résultat n'est pas tres satisfaisant , je me retrouve avec la feuille 2 et 3 du fichier "nouvelle feuille "recopier à la suite ,mais pas les données des fichiers recherché
désolé ,mais ca marche pas pour de vrais
bonne soirée
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

Bonjour les amis
Effectivement si j'ouvre 120 fichiers la mémoire ne suit plus
Je vais essayer une autre solution
ce qu'il me faut c'est les valeurs de chaque "feuille 1" de tous les fichiers nommer " feuille mère" de 1 à 120 soit recopier à la suite et en tri par ordre alphanumérique sur la feuille synthèse du fichier "nouveau feuille"
est-ce possible de copier des données dans un fichier fermé ? sachant que le fichier "nouveau feuille" et dans le même dossier que les fichiers " feuille mère" de 1 à 120
Je recherche de mon cote
bon weekend à tous
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

j'ai trouvé comment faire une boucle ,enfin je crois, il reste à recopier les données

Sub Test26()
'déclaration de la variable
Dim monfichier As Variant

ChDir "O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\"
monfichier = Dir("xlsx.xlsx")

While monfichier <> ""
Workbooks.Open monfichier
'''''''''''''''''''''''''''''''
'boucle pour recopier la feuille 1 des fichiers

''''''''''''''''''''''''''''''
monfichier = Dir()
Wend

End Sub
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

bonjour mon ami camarchepas

je n'ai pas été capable de l'adapter ,car je suis très nul en VBA

excuse moi si je t'ai froissé

j'ai trouvé cette macro sur le web et je l'ai adapté à mon fichier
 

camarchepas

XLDnaute Barbatruc
Re : Ouvrir des fichiers dans un dossier "volant"

Ok,

A adapter le nom des feuilles et des chemins ,

Voici un programme qui fait ce que tu demandes lorsque l'on arrive à l'apprivoiser.


Code:
Sub FusionFichiers()
 
 Dim Classeur As String
  Dim Chemin As String
  Dim Onglet As Worksheet
  Dim LigneFin As Long, LigneFinACopier As Long, LigneFinCopie as long
  'Exemple : Chemin à adapter
  Chemin = "C:\Test_Fusion_Classeurs\"
  'Si uniquement des fichiers xls ou xslx , modifier l'extension en conséquence
  Classeur = Dir(Chemin & "*.xls")
 If Classeur = "" Then MsgBox " Le répertoire " & Chemin & " est vide ou inexistant": Exit Sub
  Do
  If Classeur <> "" Then
  Application.EnableEvents = False
  Workbooks.Open Chemin & Classeur
  For Each Onglet In Workbooks(Classeur).Worksheets
  'Ne traite que les onglets dont le nom est Feuil1 : A adapter
       If Onglet.Name = "Feuil1" Then
         LigneFinACopier = Onglet.Range("A" & Rows.Count).End(xlUp).Row
         LigneFinCopie = ThisWorkbook.Sheets("Synthese").Range("A" & Rows.Count).End(xlUp).Row+1
         Onglet.Range("A1:H" & LigneFinACopier).Copy Destination:=ThisWorkbook.Sheets("Synthese").Range("A" & lignefincopie)
        exit for
       End If
  Next
  Workbooks(Classeur).Close False
  Application.EnableEvents = True
  End If
  Classeur = Dir
  Loop Until Classeur = ""
  End Sub
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

je n'arrive pas à mettre correctement le chemin du fichier dans la macro

j'ai le MSBOX qui s'affiche avec le message comme quoi il ne trouve pas le fichier

'chemin de mes fichiers ("O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\fichier mere1.xlsx")

ceci et le chemin complet pour ouvrir un fichier , que dois-je mettre exactement

j'ai essayer "O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\"

même "O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\fichier mere1.xlsx"

et toujours rien
 

camarchepas

XLDnaute Barbatruc
Re : Ouvrir des fichiers dans un dossier "volant"

Et comme ceci

Code:
Sub FusionFichiers()
 
 Dim Classeur As String
  Dim Chemin As String
  Dim Onglet As Worksheet
  Dim LigneFin As Long, LigneFinACopier As Long, LigneFinCopie as long
  'Exemple : Chemin à adapter
 Chemin = "O:\EXCEL\SYNTHESE DE FEUILLE\copie fichier\"
  'Si uniquement des fichiers xls ou xslx , modifier l'extension en conséquence
 Classeur = Dir(Chemin & "*.xlsx")
 If Classeur = "" Then MsgBox " Le répertoire " & Chemin & " est vide ou inexistant": Exit Sub
  Do
  If Classeur <> "" Then
  Application.EnableEvents = False
  Workbooks.Open Chemin & Classeur
  For Each Onglet In Workbooks(Classeur).Worksheets
  'Ne traite que les onglets dont le nom est Feuil1 : A adapter
      If Onglet.Name = "Feuil1" Then
         LigneFinACopier = Onglet.Range("A" & Rows.Count).End(xlUp).Row
         LigneFinCopie = ThisWorkbook.Sheets("Synthese").Range("A" & Rows.Count).End(xlUp).Row+1
         Onglet.Range("A1:H" & LigneFinACopier).Copy Destination:=ThisWorkbook.Sheets("Synthese").Range("A" & lignefincopie)
        exit for
       End If
  Next
  Workbooks(Classeur).Close False
  Application.EnableEvents = True
  End If
  Classeur = Dir
  Loop Until Classeur = ""
  End Sub
 

La Vouivre

XLDnaute Occasionnel
Re : Ouvrir des fichiers dans un dossier "volant"

avec une dernière modif j'ai enfin compris ,et ca marche
beau travail mon amis camarchepas (et bin si qu'ca marche)
juste un détail la ligne 1 des fichiers et recopier ,et-il possible de ne pas la recopier c'est les titre de colonne
 

camarchepas

XLDnaute Barbatruc
Re : Ouvrir des fichiers dans un dossier "volant"

Voici , et bien heureux d'avoir pu te faire avancer

Code:
 Onglet.Range("A1:H" & LigneFinACopier).Copy Destination:=ThisWorkbook.Sheets("Synthese").Range("A" & lignefincopie)

a remplacer par 

 Onglet.Range("A2:H" & LigneFinACopier).Copy Destination:=ThisWorkbook.Sheets("Synthese").Range("A" & lignefincopie)
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 275
Membres
103 170
dernier inscrit
HASSEN@45