Microsoft 365 Concatener plusieurs fichier dans un fichier et onglet unique

de_hanstrapp

XLDnaute Occasionnel
Bonsoir à tous,

J'ai dans un même dossier une cinquantaine de fichiers qui sont au format .xlsm et qui ont la même architecture.
Je souhaite dans un nouveau fichier intégrer toutes les données qui se trouve dans le second onglet nommé "Application_Page" (les données à extraire commencent à la ligne 8 et le nombre est variable selon les fichiers mais ne dépasse jamais les 2000 lignes.

J'ai trouvé un code mais je n'arrive pas à l'adapter...
Quelqu’un pourrait il m'aider ?

Sub recup()
Range("A1").Select
Chemin = "C:\Users\XXX\Desktop\XXX"
Fichier = Dir(Chemin & "*.xlsm")
Do While Fichier <> ""
Workbooks.Open Filename:=Chemin & Fichier
Range("Synthese").Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Windows(Fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub


Infos : le fichier de destination se nomme "Intégration" et les données devront se trouver dans l'onglet unique qui se nomme "Synthese"

Merci par avance pour votre aide.

Nsapg
 

chris

XLDnaute Barbatruc
Bonjour

Avec 365 c'est bien plus simple à faire avec PowerQuery, intégré à Excel

Range("A65536") date d'il y a 13 ans où c'était le nombre max de lignes...

Il faudrait 2 bouts de fichier REPRESENTATIFS pour modéliser
 

de_hanstrapp

XLDnaute Occasionnel
Bonjour,

Les lignes 4 et 5 ont ce format oui.
Il y a également des infos sur le remplissage des cellules depuis la ligne 1 jusqu’à la ligne 7.
A compter de la ligne 8 il s’agit d’infos clients qui visent à créer une base de données.

La base de données finales sera composée de l’ensemble des classeurs contenus dans le dossier. L’idéal serait que les lignes 1 à 7 figurent également dans le fichier global mais ce n’est pas une nécessité absolue.

Bonne journée

nsapg
 

chris

XLDnaute Barbatruc
Bonjour

Solution très simple en PowerQuery

Modifier le chemin dans l'onglet Tech afin d'indiquer celui où sont stockés tes fichiers puis Données, Actualiser Tout

J'ai dupliqué classeur1 en classeur2 pour avoir 2 fichiers
Curieusement tu as une colonne à droite du bandeau des lignes 4 et 5
Il y a peut-être un petit ajustement à faire si le fichier exemple
J'ai rangé le fichier Synthese dans le dossier, donc il y un filtre dans la requête d'assemblage qui élimine tout fichier contenant le mot Synthese

Si cela te convient, j'expliquerait la demi-douzaine de manips effectuées
 

Pièces jointes

  • Synthese.xlsm
    66.9 KB · Affichages: 7

de_hanstrapp

XLDnaute Occasionnel
Bonjour

Solution très simple en PowerQuery

Modifier le chemin dans l'onglet Tech afin d'indiquer celui où sont stockés tes fichiers puis Données, Actualiser Tout

J'ai dupliqué classeur1 en classeur2 pour avoir 2 fichiers
Curieusement tu as une colonne à droite du bandeau des lignes 4 et 5
Il y a peut-être un petit ajustement à faire si le fichier exemple
J'ai rangé le fichier Synthese dans le dossier, donc il y un filtre dans la requête d'assemblage qui élimine tout fichier contenant le mot Synthese

Si cela te convient, j'expliquerait la demi-douzaine de manips effectuées


Bonjour Chris, cela fonctionne ! Merci bcp.
Peux tu m'expliquer la démarche ?
Bonne journée.
nsapg
 

chris

XLDnaute Barbatruc
RE
  • Ouvrir le classeur servant à la synthese
  • Données, Obtenir des données, A partir d'un fichier, A partir d'un dossier : indiquer le chemin.
    dans la fenêtre suivante en bas : Combiner et Transformer les données
    dans la fenêtre suivante sélectionner le nom de l'onglet à utiliser et valider
    Cela ouvre PowerQuery
  • A gauche toute une arborescence, au centre un aperçu du résultat, à droite la liste des étapes.
  • A gauche on va sélectionner Transformer l'exemple de fichier qui est la requête modèle servant à décrire ce qui doit être effectué sur chaque fichier (et que PowerQuery transforme au fur et à mesure en fonction Fx transformer le fichier)
  • Onglet Accueil, Supprimer les lignes du haut : 5
  • Sélectionner les colonnes 1 à 39, clic droit, Supprimer les autres colonnes
  • A gauche passer sur la dernière requête, qui porte le nom du sous-dossier
  • Elle est en erreur : supprimer à droite la dernière ligne Type modifié (l'automatisme a typé toutes les colonnes et comme on n'en a gardé que 39...)
  • Facultatif : si le classeur de synthèse doit être rangé dans le même dossier que les fichiers à traiter, sélectionner à droite la seconde étape (Fichiers masqués filtrés1) puis filtrer la colonne Name (en confirmant l'insertion de l'étape), Filtre Textuel, Ne contient pas et indiquer tout ou partie du nom du classeur de synthèse (attention à la casse)
  • Repasser à la dernière étape et sélectionner les colonnes par groupe de même type et typer à partir de Accueil, Type de données...
  • Sortir par Fermer charger dans Table, et choisir l'emplacement
Facultatif : pour avoir, comme dans mon exemple le dossier passé en paramètre :
  • Prévoir une cellule et la nommer Dossier
  • Modifier la ligne Source des 2 requêtes : Exemple de fichier et la toute dernière qui porte le nom du sous-dossier et remplacer le chemin et ses guillemets par
    Excel.CurrentWorkbook(){[Name="Dossier"]}[Content][Column1]{0}
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
699

Membres actuellement en ligne

Statistiques des forums

Discussions
314 486
Messages
2 110 107
Membres
110 666
dernier inscrit
Yaya123