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

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

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

Dernière édition:
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 🙂
 
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

Dernière édition:
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.
 
- 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

Discussions similaires

Réponses
2
Affichages
371
Réponses
10
Affichages
714
Réponses
24
Affichages
999
Réponses
15
Affichages
662
Retour