XL 2019 importer le contenu de plusieurs xlsx dans une même sheet d'un nouveau fichier excel

jojolatribuche

XLDnaute Junior
Bonjour,
Je viens de récupérer un travail fastidieux réalisé jusqu'à ce jour par une étudiante dans ma société.
Je m'explique nous recevons d'un de nos transporteur un fichier correspondant à un container envoyé que nous devons une fois reçu ouvrir effacer des colonnes sauver puis importer dans dans notre système.
le soucis est que nous recevons une Moyenne de 85 fichiers tous les 10 jours en même temps. (Vous comprendrez donc que je dois ouvrir tous les fichiers 1 par 1 modifier fermer puis importer 1 par 1 dans notre système).
Je cherche donc à pouvoir importer l'ensemble des données qui sont présentes dans chaque Xlsx dans une même sheet et en même temps formater les données qui s'y trouve en effaçant les données non importantes.
J'ai des connaissances de Bases VBA mais je n'arrive pas à trouver qqch de logique pour créer le code adéquat.
A savoir que chaque fichier porte un nom différent exemple 20220302164402_CT020551.xlsx et que la feuille ce nome de la même manière dans le fichier.
J'aimerai copier les données des colonnes A,D,E dans le nouveau fichier

Auriez-vous un code magique afin de pouvoir tuer un travail manuel qui n'a aucune valeur ajoutée?

Cordialement

Jonathan
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour que powerquery puisse vous construire automatiquement une requête avec un exemple de transformation il faut que les feuilles a extraire aient le même nom, ce qui n'est pas le cas chez vous.
Alors dans le fichier joint vous trouverez des requêtes dans lesquelles j'ai changé manuellement les étapes dans la barre de formule de power query (menu affichage si besoin).

Requête principale : RQ_,20220228
Etape 'Source' : modifier le chemin vers le dossier à traité.
Eventuellement on pourra inclure ici le paramètre 'Dossier'

Etape 'Lignes filtrées' : Table.SelectRows(Source, each Text.StartsWith([Name], "20220228"))
Cette étape pourrait être supprimée si TOUS les fichiers du dossier sont à traiter.

Etape 'Autre colonnes supprimées'
J'ai juste interverti les noms des colonnes "Delivery date" et "Delivery Note" dans la barre de formule

Requête 'Transformer l'exemple de fichier':
Important : c'est la requête dans laquelle vous devez faire les transformations que vous souhaitez. C'est la requête qui sert à Power Query pour construire la fonction de transformation des données des feuilles. (fonction appelée dans la requête principale)
Dans cette requête j'ai modifié l'étape 'Navigation' pour quelle prenne la première feuille dont le nom commence par '20220228':
Table.FirstN(Source, each Text.StartsWith([Name], "20220228"))[Data]{0}
Là aussi il faudra peut-être prévoir l'introduction du paramètre 'Racine'

Voilà, voilà.

cordialement
 

Pièces jointes

  • PQ-Extraction.xlsx
    27.6 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix

jojolatribuche

XLDnaute Junior
donnez ici des fichiers exemples avec de tels cas.

Vous ne seriez pas en train de me dire que je me fais chier pour rien à vous répondre et vous construire des requêtes ?

Bonjour,

Pour que powerquery puisse vous construire automatiquement une requête avec un exemple de transformation il faut que les feuilles a extraire aient le même nom, ce qui n'est pas le cas chez vous.
Alors dans le fichier joint vous trouverez des requêtes dans lesquelles j'ai changé manuellement les étapes dans la barre de formule de power query (menu affichage si besoin).

Requête principale : RQ_,20220228
Etape 'Source' : modifier le chemin vers le dossier à traité.
Eventuellement on pourra inclure ici le paramètre 'Dossier'

Etape 'Lignes filtrées' : Table.SelectRows(Source, each Text.StartsWith([Name], "20220228"))
Cette étape pourrait être supprimée si TOUS les fichiers du dossier sont à traiter.

Etape 'Autre colonnes supprimées'
J'ai juste interverti les noms des colonnes "Delivery date" et "Delivery Note" dans la barre de formule

Requête 'Transformer l'exemple de fichier':
Important : c'est la requête dans laquelle vous devez faire les transformations que vous souhaitez. C'est la requête qui sert à Power Query pour construire la fonction de transformation des données des feuilles. (fonction appelée dans la requête principale)
Dans cette requête j'ai modifié l'étape 'Navigation' pour quelle prenne la première feuille dont le nom commence par '20220228':

Là aussi il faudra peut-être prévoir l'introduction du paramètre 'Racine'

Voilà, voilà.

cordialement
ok je vais tester celà et voir si c'est mieux que le code VBA :) car effectivement ce serait plus propre et moins problématique pour la suite
 

jojolatribuche

XLDnaute Junior
donnez ici des fichiers exemples avec de tels cas.

Vous ne seriez pas en train de me dire que je me fais chier pour rien à vous répondre et vous construire des requêtes ?
non non du tout je pensez que pour vous le travail était terminé.. en aucun cas c'est fait pour rien que du contraire :) :) le VBA déjà en lui même fonctionne parfaitement je vais demain tester le powerquery selon vos indications..
 

jojolatribuche

XLDnaute Junior
Bonjour,

Dans cette requête sont gérés les multi 'Delivery Note'.

Cordialement
Je sais pas comment vous remercier tellement c'est presque parfait lol presque car j'ai une petite demande concernant les cellule vide dans la colonne Delivery date quand dans powerquery je retire les Null il me mets le message d'erreur suivants:

1647890417809.png


1647890451356.png


Si vous savez m'aider pour ça la requête sera parfaite :)

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Si vous voulez que je continue à vous aider, il faudra être plus précis.
Quelle requête ? Quelle étape ?

Joignez des données exemple et la requête telle que vous l'avez modifiée, je ne suis pas devin.

Cordialement
 

jojolatribuche

XLDnaute Junior
Bonjour,

Si vous voulez que je continue à vous aider, il faudra être plus précis.
Quelle requête ? Quelle étape ?

Et les données exemple, c'est encore à moi de les fournir ?
lors de l'importation des données dans powerQuery est il possible d'exclure les cellules de la delivery date qui sont blank.
Comme indiqué ci-dessous j'ai essayé de lui dire d'exclure les blank de la selection mais une fois que je retourne sur l'excel j'ai le message d'erreur.
Le but final, est d'avoir un fichier avec uniquement des dates.

Cordialement
 

jojolatribuche

XLDnaute Junior
lors de l'importation des données dans powerQuery est il possible d'exclure les cellules de la delivery date qui sont blank.
Comme indiqué ci-dessous j'ai essayé de lui dire d'exclure les blank de la selection mais une fois que je retourne sur l'excel j'ai le message d'erreur.
Le but final, est d'avoir un fichier avec uniquement des dates.

Cordialement
avant d'importer les données via la requête que vous avez gentillement créé, je souhaiterai exclure les les lignes qui ont une delivery date Blank, de ce fait j'ai essayé en filtrant les delivery date dans power query exclure les Null
1647948120555.png


1647948144643.png


Ce qui donne comme code = Table.SelectRows(#"Delivery Note développé", each ([Delivery date] <> null))

Quand je fais fermer et charger

1647948227072.png


J'ai le message d'erreur suivant.

j'espère avoir été le plus complet possible.

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

J'ai compris ce que vous vouliez, ce que je ne peux deviner c'est là où vous vous êtes trompé.
Quelle étape ? ça veut dire quel est le nom de l' étape qui était sélectionnée lorsque vous avez tenté le filtre des null.
Quelle Requête ? ça veut dire quel est son nom ?

Répondre simplement à ces deux questions était à mon avis plus simple que de faire des images, sur lesquelles il faut aller chercher l'information et sur lesquelles on ne peut intervenir.

Alors je répondrais simplement : sélectionnez l'étape "Autres colonnes supprimées" et faites votre filtre.
 

jojolatribuche

XLDnaute Junior
Re,

J'ai compris ce que vous vouliez, ce que je ne peux deviner c'est là où vous vous êtes trompé.
Quelle étape ? ça veut dire quel est le nom de l' étape qui était sélectionnée lorsque vous avez tenté le filtre des null.
Quelle Requête ? ça veut dire quel est son nom ?

Répondre simplement à ces deux questions était à mon avis plus simple que de faire des images, sur lesquelles il faut aller chercher l'information et sur lesquelles on ne peut intervenir.

Alors je répondrais simplement : sélectionnez l'étape "Autres colonnes supprimées" et faites votre filtre.
Je comprends dsl c'est nouveau pour moi de demander de l'aide :-(
J'ai essayé d'effectuer ce que vous m'avez dit de faire mais hélas ça ne fonctionne pas du coup j'ai essayé à différent niveau de la requête de faire le filtre mais le message d'erreur est tjs le même. :-(
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

De toute façon, tant que vous nous donnerez pas de matériel pour comprendre ce qui se passe, je ne pourrais qu'imaginer et vous perdre dans des solutions sans fin. Je connais ce message d'erreur. Il peut provenir de beaucoup de choses, y compris de la nature (type) des données.
Mais je ne peux que supputer.
Allez-vous demander au garagiste de faire un diagnostic sur photo de votre voiture ?
Aidez-nous à vous aider et on ira plus vite.
 

jojolatribuche

XLDnaute Junior
Re,

De toute façon, tant que vous nous donnerez pas de matériel pour comprendre ce qui se passe, je ne pourrais qu'imaginer et vous perdre dans des solutions sans fin. Je connais ce message d'erreur. Il peut provenir de beaucoup de choses, y compris de la nature (type) des données.
Mais je ne peux que supputer.
Allez-vous demander au garagiste de faire un diagnostic sur photo de votre voiture ?
Aidez-nous à vous aider et on ira plus vite.
Voici
 

Pièces jointes

  • Delivery dates Laurenty_AX.xlsx
    48.6 KB · Affichages: 2

Discussions similaires