Boucle sur classeurs fermés

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

  • BoucleClasseursFermés.zip
    22.4 KB · Affichages: 38
  • BoucleClasseursFermés.zip
    22.4 KB · Affichages: 34
  • BoucleClasseursFermés.zip
    22.4 KB · Affichages: 28

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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
 

Guiv

XLDnaute Occasionnel
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
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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
 

michel_m

XLDnaute Accro
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

  • BoucleClasseursFermés.zip
    29.9 KB · Affichages: 44
  • BoucleClasseursFermés.zip
    29.9 KB · Affichages: 47
  • BoucleClasseursFermés.zip
    29.9 KB · Affichages: 44
Dernière édition:

Guiv

XLDnaute Occasionnel
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
 

kiki29

XLDnaute Barbatruc
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é.
 

kiki29

XLDnaute Barbatruc
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:

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi