Consolide Classeurs Repertoire

kenshiro

XLDnaute Nouveau
Bonjour a tous,
Je me présente, je m'apelle Kevin et je suis comptable.
Je suis plutôt newby sur le forum et remercie les différents acteurs qui posent et traitent les questions concernant Excel. A maintes reprises je me suis inspiré de vos travaux :p

Aujourd'hui j'arrive avec une question qui semble ne pas avoir été traité (ou je suis passé a côté). Voila je me lance...

J'essaye depuis quelques temps de consolider tout les classeurs Excel présent dans un repertoire de type ("c:\xxx\") en un classeur existant batisé pour l'occasion : ConsolideClasseursRepertoire.xls
Ainsi, si j'ai 5 classeur Excel composé de 3 onglets, mon ConsolideClasseursRepertoire.xls sera lui même composé de 1 feuille "Accueil" + 15 onglets précités.

Cette feuille "Accueil" contient :
un bouton "Go" : qui lance la procédure VBA (consolide) chargée de consolidé.
un bouton "Sup" : qui lance (sup) supprime toute les feuilles sauf "Acceuil".

J'ai donc placer en PJ à ce message le fichier Zip contenant :
5 classeurs Excel nommé "FilialeX.xls"
1 classeurs ConsolideClasseursRepertoire.xls

Les 5 classeurs contiennent 3 feuilles avec 1 valeur différente dans la cellule A1.
exemple :
A1 de feuille 1 de classeur "FilialeN" = n
A1 de feuille 2 de classeur "FilialeN" = n+2
A1 de feuille 3 de classeur "FilialeN" = n+3

Lorsque j'actionne "Go" de la feuille "Acceuil" de ConsolideClasseursRepertoire.xls
Mon classeur devrait ce retrouver avec les 15 feuilles, ce qui est le cas
avec pour chacune des feuilles une valeure différente dans A1.
Dans le cas présent le classeur devrait donc contenir après le "Go" :
A1 de feuille 1 de ConsolideClasseursRepertoire.xls = 1 ;
A1 de feuille 2 de ConsolideClasseursRepertoire.xls = 2 ;
...
A1 de feuille n de ConsolideClasseursRepertoire.xls = n.

Mais voila... ce n'est pas le cas

Je me retroure avec 15 feuilles dont les valeurs en A1 =
(1;1;1;4;1;1;7;1;1;10;1;1;n;1;1)

La procédure "Go" créée bien 15 feuilles, semble copier toutes les premières feuilles de mes 5 classeurs mais pas les feuilles 2 et 3.
A la place elle semble reprendre la feuille 1 du premier classeurs Filiale1, d'ou la valeur 1 dans la case A1.
Et biensur je ne sais pas pourquoi :(

Je me suis un peu étendue sur l'énoncé de mon problème et j'espère que vous êtes arrivés au bout de la lecture.

J'espère que vous vous pencherez sur mon petit problème de réunion de classeurs et qu'il vous inspire :)



Merci à tous,

Kev.




nota : pour les deux procédures du classeur je me suis aider d'un site free qui est très bien aussi. Mais je ne sais pas trop si la pub est tolérée :confused:
(M. boisgontier si vous connaissez)
 

Pièces jointes

  • ConsolideClasseursRepertoire.zip
    19.6 KB · Affichages: 80

kenshiro

XLDnaute Nouveau
Re : Consolide Classeurs Repertoire

Re a tous,

Biensûr, après le post, j'ai trouver la solution :D

Sub consolide()
ChDir ActiveWorkbook.Path
Set classeurMaitre = ActiveWorkbook
sup
compteur = 1
nf = Dir("*.xls")
Do While nf <> ""
If nf <> classeurMaitre.Name Then
Workbooks.Open Filename:=nf
For k = 1 To Sheets.Count
Workbooks.Open Filename:=nf 'ajout de la ligne a 19h44 21/11/07
Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = "Mapage" & compteur
compteur = compteur + 1

Next k
Workbooks(nf).Close False
End If
nf = Dir
Loop
End Sub

"Ce poser la bonne question, c'est souvent trouver la bonne réponse"
(célèbre inconnu)
 

Spitnolan08

XLDnaute Barbatruc
Re : Consolide Classeurs Repertoire

Bonsoir,
Code:
Sub consolide()
  ChDir ActiveWorkbook.Path
  Set classeurMaitre = ActiveWorkbook
  sup
  compteur = 1
  nf = Dir("*.xls")
  Do While nf <> ""
    If nf <> classeurMaitre.Name Then
      Workbooks.Open Filename:=nf
      With Workbooks(nf)
      For k = 1 To .Sheets.Count
        .Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
        classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = "Mapage" & compteur
        compteur = compteur + 1
        
      Next k
      .Close False
      End With
    End If
    nf = Dir
  Loop
End Sub
Cordialement

Edit : Je m'étais absenté et j'ai oublié de rafraichir...mais pas la même solution.
 

Discussions similaires

Réponses
19
Affichages
716

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 750
dernier inscrit
fred13340