Fusion de feuilles

coucou MFerrand et Steelson,

j'espère que vous m'en voudrez pas si j'ai plagié la signature de jmd !

je vous laisse lire aussi ce post : https://forum.excel-pratique.com/viewtopic.php?p=679296#p679296

dhany

Hello tout le monde!

Merci en tout cas de vos efforts pour faire les choses le plus correctement possible.

Je réitère donc ma question:

Le bouton qui lance la macro est sur la feuille compilation et c'est parfait.

La macro comme vous avez pu le constater copie bien toutes les feuilles les unes à la suite de autres mais le fait à partir de la ligne 2.

Je souhaiterai que la macro soit modifiée pour qu'elle colle à partir de la ligne 6.

Si vous pensez qu'en plus la macro est mal écrite, je vous suis reconnaissant de la modifier en conséquence.

Merci à tous !!!

OK je viens de tester toutes vos solutions et il y a un malentendu.

Il faut que la macro efface tout et recolle toutes les feuilles mises à jour à chaque fois.

Les feuilles 1 et 2 sont des exemples qui vont être plus de 15 dans la version finale. Les données de ces feuilles sont mises à jour tous les jours avec de nouvelles données.

La macro doit dont tout effacer sur la feuille compilation et recoller toutes les feuilles les unes en dessous des autres en commencant par la première feuille.

Enfin te revoilà !

On peut l'écrire de quantité de façon ta macro, en tout cas la rendre plus fiable... mais la question préalable est de savoir si tu es bien sûr de ta demande ?

Car faire une macro pour introduire des lignes vides au sein d'un tableau de données est une pratique incohérente.

Je demande donc si tu te sens bien ? Explique-nous donc pourquoi tu veux des lignes vides et on verra ensuite...

NB- Il n'y a pas malentendu, l'effacement est bien fait, la question n'est pas là !

edit : Et pour ma part, je suis partisan d'éviter de copier-coller parce qu'on peut faire mieux !

Merci pour ta reponse rapide

OK alors disons que tu refais complètement la macro au propre pour qu'elle copie (fusionne) les données de chaque feuilles sur la feuille compilation et surtout sans lignes vides !!!

employé 1 remplit la feuille 1

employé 2 remplit la feuille 2

... etc ...

La macro doit rapatrier les données de la feuille 1 sur la feuille compilation, rapatrier les données de la feuille 2 juste en dessous puis de la feuille 3, puis de la feuille 4 , etc ...

La semaine prochaine, tous les employés auront mis leur feuille à jour avec les données des 7 jours précédents.

La macro doit donc tout effacer et rapatrier les données de la feuille 1 puis de la feuille 2, etc ... pour avoir toujours les données à jour.

Fais fonctionner la macro du fichier après avoir ajouté ou supprimé des lignes dans la feuille 1 et tu vas voir qu"elle efface tout et recommence la fusion à partir de la ligne 2.

Ce que je souhaiterai c est qu'elle fasse pareil mais à partir de la ligne 6 de la feuille compilation!

Ce serait vraiment super efficace que quelqu'un reprenne mon fichier et modifie la macro pour qu'elle fasse ce que je souhaiterai avec les explications nécessaires dans le code pour que je puisse apprendre et le forum avec.

Merci mille fois à tous

On tourne en rond !

Tu me demandes de faire quelque chose d'incohérent, ce que je ne fais jamais s'il n'y a pas au bout une cohérence à un niveau supérieur !

Donc, n'étant pas un exécutant à qui l'on pourrait donner des directives qu'il se sentirait tenu d'exécuter sans en connaître la raison, soit tu expliques pourquoi tu veux une telle chose que l'on ne fait jamais lors du traitement de données, et je verrais si l'on peut répondre de façon cohérente à ta demande et comment, soit ma participation s'arrête ici.

Cordialement.

OK merci

si tu souhaites que la compil commence à la ligne 6, mets quelque chose de A1 à A5 ! sinon

[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

effacera les lignes et remontera la compilation en ligne 2 !

La semaine prochaine, tous les employés auront mis leur feuille à jour avec les données des 7 jours précédents.

La macro doit donc tout effacer et rapatrier les données de la feuille 1 puis de la feuille 2, etc ... pour avoir toujours les données à jour.

Je me permets une réflexion (par expérience).

TOUT le monde remplit le MÊME fichier !!

Je te proposerai bien (même si cela ne répond pas directement à ta demande) que chacun remplisse SON fichier et que la compilation s'effectue sur l'ensemble d'un répertoire.

J'avais mis en place ceci, sur plusieurs onglets, le nom du propriétaire du fichier est donné entre 2 points : monfichier.michel.xlsx par exemple

Salut Steelson,

Tout d'abord mille mercis de ne pas avoir abandonné ni senti offusqué que je puisse demander que l'on me donne le résultat final du code avec explications.

Au moins il semble que toi, tu as compris ce que je voulais. Il me semble qu'en effet ce n'est pas bien compliqué.

1) j'ai essayé de remplir les lignes de 1 à 5 avec du texte mais la macro efface tout et remonte sur la première ligne.

2) Si je supprime [A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete du code, la macro n'efface plus rien et colle la mise à jour en dessous de la première. Je me retrouve donc avec le premier "collage" toujours là et répété une 2e fois en dessous avec le 2e "collage". Me suis tu?

3) Comme tu le suggères, en effet les collaborateurs remplissent leur propre fichier rigoureusement identique en tout point aux fichiers des autres collaborateurs (environ 15). Ils le remplissent tous les jours avec de nouvelles données à la suite des premières (environ 15 lignes par jour). Je fais la mise à jour de tout ça chaque semaine dans "compilation".

Comme je n'ai pas trouvé le moyen de rapatrier la feuille unique de tous ces fichiers de collaborateurs dans un seul autre (compilation), j'ai d'abord commencé à rapatrier toutes les feuilles dans mon fichier "compilation" avec Menu "données/obtenir des données/à partir d'un fichier/à partir d'un classeur". Je répète cette opération avec tous les fichiers des collaborateurs et je me retrouve avec mon fichier "compilation" qui regroupe toutes les feuilles (cf le fichier que tu as téléchargé). Quand j'ouvre le fichier "compilation", j'actualise tout pour que toutes les feuilles collaborateurs se mettent à jour et j'active la macro pour récupérer toutes les données de toutes les feuilles dans l'onglet "compilation" ! ouf ...

bonjour

il semble que tu saches récupérer des fichiers séparés en un seul avec PQuery

mais que tu peine à concaténer des onglets

dès lors demande-toi à quoi sert de faire divers onglets ? peut-on faire des saisie dans les 15 fichiers chacun n'ayant qu'un onglet ?

note PQuery sait concaténer des onglets aussi

A-

1) j'ai essayé de remplir les lignes de 1 à 5 avec du texte mais la macro efface tout et remonte sur la première ligne.

tu peux éventuellement faire

Sheets("Compilation").[A1].CurrentRegion.Offset(6, 0).Clear

pour préserver les 5 premières lignes

enfin, mets 5, 6 ou 7 à la place de 1 selon le nombre de lignes que tu veux préserver, mais renseigne au moins une valeur dans la ligne

Comme MFerrand, j'aimerais quand même bien savoir pourquoi ne pas commencer ligne 2

B-

si en effet tu pars de fichiers, je peux aussi te proposer quelque chose qui est assez ancien et sans doute mal codé mais parfaitement fonctionnel

8christian53.xlsm (22.94 Ko)

C-

je ne suis pas assez calé avec PowerQuery pour te guider, mais ta version le permet

Merci jmd et Steelson,

Remplacer le 1 par 6 dans la ligne Sheets("Compilation").[A1].CurrentRegion.Offset(6, 0).Clear suffit largement à mon bonheur !!!! Ça fonctionne parfaitement.

jmd, je n'ai pas trouvé comment combiner directement les requêtes avec Power Query mais je viens de tester 15 fichiers avec plus de 1000 lignes chacune et la mise à jour de chaque onglet dans le fichier "compilation" se fait très bien et très vite.

Ensuite la macro permettant de fusionner toutes les données dans un seul onglet fonctionne aussi parfaitement et "colle" maintenant les données à jour à partir de la ligne 6 !!! Youpi

Steelson et MFerrand, la ligne 6 parce que j'ai une mise en page de titre et données de synthèse qui occupe les 5 premières lignes.

Un gros MERCI à vous !

re

bizarre que tu fasses la moitié du boulot avec un outil et l'autre moitié avec un autre

mais c'est tonchoix

note que PQuery n'a pas peur de millions de lignes

mais ne les charges alors pas dans Excel, vois Power BI Desktop gratuit.

Bonsoir,

Steelson et MFerrand, la ligne 6 parce que j'ai une mise en page de titre et données de synthèse qui occupe les 5 premières lignes.

Ce qui justifiait seulement que tu déplaces ta ligne d'en-tête en 6 (au lieu de 1) et modifie la 1re ligne de la macro pour qu'elle n'efface qu'à partir d'en-dessous, le reste suivait...

Je ne comprends pas tes réticences à ne pas exprimer des motifs qui n'ont rien de secret ni répréhensible ou inavouable, et qui aurait fait avancer bien plus vite...

Bonne soirée.

Bon, si tu es heureux alors tu peux cliquer ici

mais pour monter au nirvana, poursuis PowerQuery (et pas PQ pour les intimes) jusqu'au bout !

merci à tous de votre soutien ! j'apprécie

Rechercher des sujets similaires à "fusion feuilles"