Boucle sur classeurs fermés

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

Guiv

XLDnaute Occasionnel
Bonjour,
Après moult recherches sur ce forum et ailleurs, j'ai partiellement réussi à faire ce que je voulais:
Il faut que les nouvelles données saisies dans les colonnes A et B d'un classeur nommé 'FichierOuvert' puissent se mettre à jour dans x classeurs fermés nommés 'Fichier1', 'Fichier2' etc, dans un répertoire 'Données'.
Pour cela je liste les classeurs existants dans le répertoire 'Données', puis je copie avec ADO.
Ca marche mais ça met des plombes pour 3 ou 4 fichiers, et je pourrais en avoir 500 ou 1000!
Pensez-vous qu'on peut faire plus rapide?
Ci-joint un exemple (il faut activer Microsoft ActiveX Data Objects 2.x Library)
Merci d'avance
Guiv
 

Pièces jointes

Re : Boucle sur classeurs fermés

Bonsoir,

Pourquoi des fichiers fermés? Avec des classeurs ouverts, le temps devient 2,3 s

Code:
Sub essai()
  repertoire = ThisWorkbook.Path & "\données\"
  Application.ScreenUpdating = False
  maitre = ThisWorkbook.Name
  fichier = Dir(repertoire & "fich*.xls")
  Do While fichier <> ""
      Workbooks.Open Filename:=repertoire & fichier
      Workbooks(maitre).Sheets(1).[A1:B100].Copy Sheets(1).[A1]
      ActiveWorkbook.Close True
      fichier = Dir
  Loop
End Sub

JB
 
Re : Boucle sur classeurs fermés

Re,
Merci pour cette proposition rapide autant qu'efficace!
En revanche, mes fichiers "fermés" qui pour l'exemple étaient nommés 'Fichier1, 2 etc' en réalité se nomment TOTO, TATA, RIRI, FIFI, LOULOU...
Donc la variable fichier = Dir(repertoire & "fich*.xls") ne fonctionnera pas en l'état... C'est pour ça que je listais les fichiers.
Quoi faire?
Cordialement,
Guiv
 
Re : Boucle sur classeurs fermés

Avec fichier = Dir(repertoire & "*.xls"), on obtient tous les fichiers du sous-répertoire Données.

Code:
Sub essai()
  tt = Timer()
  repertoire = ThisWorkbook.Path & "\données\"
  Application.ScreenUpdating = False
  maitre = ThisWorkbook.Name
  fichier = Dir(repertoire & "*.xls")
  Do While fichier <> ""
      Workbooks.Open Filename:=repertoire & fichier
      Workbooks(maitre).Sheets(1).[A1:B100].Copy Sheets(1).[A1]
      ActiveWorkbook.Close True
      fichier = Dir
  Loop
  MsgBox Timer() - tt
End Sub

JB
 
Re : Boucle sur classeurs fermés

Bonsoir Guiv, JB

proposition avec fichiers restant fermés ( modifies qd m^me le coup des lolo, tata comme te l'as indiqué Jacques)

j'ai ajouté des noms de colonnes dans les fichiers fermés pour mon confort mais ce n'est pas obligatoire repasser alors en Hdr=no

edit 19:45

temps= 2,03s ram 512 proc 1,7ghz
 

Pièces jointes

Dernière édition:
Re : Boucle sur classeurs fermés

Re JB, Michel_M,
Merci et bravo, les 2 propositions fonctionnent nickel.
Je devrais pouvoir les adapter à mon projet sans problème (sinon, je vous rappelle à l'aide!)
Merci encore et bonne soirée
Guiv
 
Re : Boucle sur classeurs fermés

Salut,pour les timing
Fichiers ouverts : 0.6s
ADO : 1.2s
Par contre si plug-in Antivirus fichiers Office activé la méthode des fichiers ouverts prend un temps catastrophique ( 15 s ) et celui via ADO reste naturellement inchangé.
 
Re : Boucle sur classeurs fermés

Salut
Pour Michel : la même que JB pour les 2 temps, en + comme JB demandait une raison d'utiliser ADO au lieu d'ouvrir les fichiers à l'écran. En fait c'est déjà un temps que j'avais constaté ,de 2 à 3 s par fichier, à l'ouverture si plug-in Norton AV pour MS Office activé.
 
Dernière édition:
- 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
Retour