Regrouper différents onglets identiques sur un seul fichier et onglet

Bianchi

XLDnaute Nouveau
Bonjour à tous,

Pouvez vous m'aider, je souhaiterai que ma procédure balai l'ensemble des fichiers xls d'un répertoire ou se trouverai le classeur et des sous répertoire ou se trouveraient les fichiers ...

je sèche un peu là ...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sub Importer()
Application.DisplayAlerts = False


'On efface toutes les données de tous les mois
For i = 1 To 1
f = Choose(i, "A TROUVER") '
derln = Sheets(f).Range("A" & Rows.Count).End(xlUp)(2).Row
Sheets(f).Range("A10:Z" & derln).ClearContents '
Next i
Application.ScreenUpdating = False

'On ouvre successivement tous les fichiers
Set wa = ActiveWorkbook
chemin = ThisWorkbook.Path & "\"
nomFichier = Dir(chemin & "*.xls*")
Do While Len(nomFichier) > 0
If nomFichier <> ThisWorkbook.Name Then
Set classeur = Workbooks.Open(chemin & nomFichier)

'On copie les onglets a trouver
For i = 1 To 1
f = Choose(i, "A TROUVER")
derln = Sheets(f).Range("A" & Rows.Count).End(xlUp)(2).Row
classeur.Sheets(f).Range("a10:z" & derln).Copy
With ThisWorkbook.Sheets(f)
lgn = .Range("A" & Rows.Count).End(xlUp)(2).Row
ThisWorkbook.Activate
.Range("b" & lgn).PasteSpecial xlPasteValues 'cela signifie que je veux les valeurs
.Range("b" & lgn).PasteSpecial xlPasteFormats ' cela signifie que je conserve le format
derln = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A10" & lgn & ":a" & derln) = classeur.Name 'classeur.Sheets(f).Range("A10")
End With
classeur.Activate
Next i
classeur.Close False
End If
nomFichier = Dir
Loop
MsgBox "Travail terminé."
Application.DisplayAlerts = True
End Sub

A TROUVER est le nom des onglets qui se trouve dans les différents classeurs excel que je souhaite récupérer pour en faire une consolidation.

C'est environ 90 onglets répartie dans 10 sous dossiers. Je ne sais pas comment insérer et ou une boucle pour que cela fonctionne...

Si une âme charitable peut m'aider ...

merci beaucoup
 

Pièces jointes

  • test V3.xlsm
    24.2 KB · Affichages: 5
  • SE23-DPT1S.xls
    214 KB · Affichages: 5
  • SE24 DPT.xls
    213.5 KB · Affichages: 4
Dernière édition:

Bianchi

XLDnaute Nouveau
Bonjour Staple1600,

Effectivement j'ai eu quelques réponses sur le forum développez.com.
Cependant, les réponses ne correspondent pas tout à fait.
En effet, je ne vois pas comment insérer une boucle dans mon code actuel qui me permette de passer en revu mes sous répertoires ...
Je cherche juste quelqu'un qui puisse m'aiguiller .

voilà tout :)
 

zebanx

XLDnaute Accro
Bonsoir à tous

@Bianchi
Sujet très intéressant avec une proposition ci-jointe qui reprend en large partie votre code.
J'ai utilisé le nom d'une autre feuille "recap" pour réaliser ce code, en travaillant sur des données plus simples à intégrer (peu de lignes et de colonnes) avec une limitation plus faible des données à importer (pas sur la colonne "z" mais sur la colonne "j" par exemple).

Idées directrices :
1. Ce qui pose problème, c'est le workbooth.path qui peut changer.
Pour contourner cet obstacle, dans le fichier de départ qui est dans le répertoire de "tête", on utilise une macro ("subfoldername_getopenfile") qui recense tous les sous-répertoires.
On utilise un getopenfilename ici qui permet d'aller chercher ce répertoire. On peut aussi directement considérer qu'on travaille sur ce répertoire donc il existe une deuxième macro ("subfoldername_current_folder")qui recense les données dans ce répertoire.

2. A partir de la liste des sous-répertoires, on va mettre une boucle (for... next) pour pouvoir utiliser le code principal en changeant si besoin le nom du "chemin" grace à la boucle for...next.
On doit mettre un backstop au cas où il n'y a pas de sous-répertoire.

3. On a deux types d'importation possible.
Soit on importe les données des fichiers des sous-répertoire et du répertoire courant ("importer_avec_repertoire_courant")
Soit on importe les données des fichiers des sous-répertoire uniquement ("importer_sans_repertoire_courant")

Brève récapitulation :
On lance une macro pour récupérer tous les sous-répertoires.
On lance la macro d'importation principale.

J'ai testé, ça à l'air de bien fonctionner.

A vous de regarder.
zebanx
 

Pièces jointes

  • copie range.zip
    409.7 KB · Affichages: 20
Dernière édition:

Bianchi

XLDnaute Nouveau
Super merci Beaucoup.
J'ai testé ça à l'air de très bien fonctionner même au delà de mes attentes.
Je vais essayer de m'y pencher quelques heures pour comprendre et adapter mais merci beaucoup de votre aide !!!!!!!!!

Je vous fais un retour dans la semaine.
 

Discussions similaires