Extraire des données non figées de plusieurs fichiers

Bonjour,

J'ai plusieurs centaines de fichiers excel dans un dossier et je voudrais extraire les informations pour certains produits. Le pb c'est que les produits ne se trouvent pas sur la même ligne à chaque fois.

Ci-joint 3 exemples de fichiers (Fichiers 1, 2 et 3) et le petit exemple de résultat final nommé BDD que je souhaiterais automatiser.

Dans chaque fichier trouver les lignes avec ces produits

Produit 2

Produit 3

Produit 4

Produit 13

Produit 19

Copier les colonnes Ventes+ date et % + date avec l'intitulé et ensuite les mettre les unes après les autres

J'ai cherché dans le forum mais j'ai pas trouvé une macro qui pourrait m'aider à faire cela.

Merci pour votre aide

16fichier-1.xlsx (10.02 Ko)
15fichier-2.xlsx (9.70 Ko)
18fichier-3.xlsx (9.64 Ko)
25bdd.xlsx (9.39 Ko)

Bonjour

Un essai.

Tous les fichiers doivent être dans un même dossier et seul le dossier BDD doit être ouvert.

Cela te convient-il ?

Bye !

48bdd.zip (37.58 Ko)

Parfait !

Merci beaucoup ! Vraiment !

J'ai juste une petite question de compréhension... Peux-tu m'expliquer la ligne suivante ? A quoi elle sert ?

col = Application.Max(2, Cells(1, Columns.Count).End(xlToLeft).Column + 1)

Merci encore


Et encore une question... en effet dans chaque fichier j'ai 2 tableaux l'un en dessous de l'autre comme montre dans l'exemple ci-joint.. On a toujours la même liste de produits à extraire et les tableaux sont nommés toujours pareil mais c'est les valeurs qui sont différentes et la taille du tableau bouge en fonction du nombre de lignes... Comment je peux faire pour extraire les données des 2 tableaux en même temps ?

Merci d'avance

14fichier-1.xlsx (10.49 Ko)

Bonjour

direct3822 a écrit :

Peux-tu m'expliquer la ligne suivante ? A quoi elle sert ?col = Application.Max(2, Cells(1, Columns.Count).End(xlToLeft).Column + 1)

Au départ, il n’y a aucune donnée sur le tableau du fichier BDD

Les premières données doivent se coller à partir de la colonne 2 (B)

Ensuite, elles se mettront à partir de la colonne où on trouve la dernière cellule vide sur la ligne 1, en partant de la droite.

L’instruction :

Cells(1, Columns.Count).End(xlToLeft).Column + 1

Donne le numéro ce cette colonne.

Dans le cas présent, on peut simplier la valeur de col à cette instruction.

Mais, dans un cas plus général, si la liste des produits était sur une autre colonne que la colonne A, il faudrait mettre l’instruction complète car dans ce cas la première valeur de col serait toujours 2.

On mettrait donc :

col = Application.Max(3, Cells(1, Columns.Count).End(xlToLeft).Column + 1)

si la liste des produits était en colonne B et que l’on veuille les données à partir de la colonne 3 (C)

OK ?

On a toujours la même liste de produits à extraire et….la taille du tableau bouge en fonction du nombre de lignes

N’y a-t-il pas contradiction ? Qu’y a-t-il de fixe ? Qu’y a-t-il de variable ?

Bye !

Bonjour,

Merci pour ton explication ! C'est très clair maintenant ! (excuse-moi de t'avoir embêté mais j'essaie de comprendre et apprendre en même temps )

Concernant le 2ème point: alors on a 2 tableaux sur la même feuille: Ce qui a de fixe dans tous les fichiers ce sera le nom des 2 tableaux. Par exemple dans la cellule A1 j'ai toujours "France (Total) indicateur 1", ensuite la liste des produits dans la colonne A (nombre de lignes varie en fonction des fichiers), ensuite à la fin de ce tableau j'ai toujours dans la colonne A (mais le N de ligne variable) le nom du 2ème tableau "France (Total) indicateur 2"

J'ai mis en PJ l'exemple concret de forme de mes fichiers...

Après ce qui varie entre fichiers c'est les produits (pas toujours le même nombre et présence mais via la première macro j'ai déjà ce qu'il me faut pour les retrouver ) et bien évidemment les valeurs dans les 2 tableaux

Donc la macro telle quelle fonctionne très bien j'imagine juste qu'il faut la dupliquer et faire une recherche de A1 jusqu'à la cellule qui contient France (Total) indicateur 2 (au lieu de la dernière ligne) copier/coller les données dans la bdd

et ensuite une recherche de la cellule qui s'appelle France (Total) indicateur 2 jusqu'à la fin et copier/coller les données dans la bdd pourquoi pas sur Feuille 2

J'espère que c'est plus clair et que tu pourras m'aider

Merci encore

20fichier-1.xlsx (11.08 Ko)

Bonjour

Nouvel essai à tester.

Cela te convient-il ?

46bdd-v2.xlsm (23.93 Ko)

Ouiii ça marche parfaitement

Merci beaucoup !

Très bonne soirée

Rechercher des sujets similaires à "extraire donnees figees fichiers"