Microsoft 365 Regrouper plusieurs onglets avec les mêmes colonnes en un seul onglet

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 !

damsleretour

XLDnaute Nouveau
Bonjour,

Je récupère des données via un site Internet et ces données sont mis dans plusieurs onglets (appelés table). Vu que ces onglets ont les mêmes noms de colonne (uniquement noms de colonne), j'aimerais les synthétiser dans un seul onglet mais avec la commande fusionner ou regrouper je ne m'en sors pas.

Pourriez-vous m'aider s'il vous plaît?

Merci énormément.

Dans l'attente de votre retour.

Bon week-end.

Respectueusement,

Damien.
 

Pièces jointes

Bonsoir @damsleretour 🙂,

Un essai via VBA:
  • Le code est dans le module de la feuille "Regrouper"
  • On a supposé que toutes les tables à regrouper étaient des tableaux structurés
  • Le tableau structuré final s'appelle "tRegroup"
  • cliquer sur le bouton "Hop!" de la feuille "Regrouper"
Le code:
VB:
Sub regrouper()
Dim x
   Application.ScreenUpdating = False
   Cells.Delete
   For Each x In ThisWorkbook.Worksheets
      If LCase(x.Name) Like "table #*" Then x.Range("a1").ListObject.DataBodyRange.Copy Me.Cells(Rows.Count, 2).End(xlUp).Offset(1)
   Next x
   For Each x In ThisWorkbook.Worksheets
      If LCase(x.Name) Like "table #*" Then x.Range("a1").ListObject.HeaderRowRange.Copy Me.Cells(1, 2): Exit For
   Next x
   With Me
      .ListObjects.Add(xlSrcRange, .Range("b1").CurrentRegion, , xlYes).Name = "tRegroup"
      .ListObjects(1).TableStyle = "TableStyleMedium7"
      .Range("tRegroup").Interior.ColorIndex = xlColorIndexNone
      .Range("tRegroup").EntireColumn.AutoFit
    End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour à tous

Toutes les tables sont des duplicatas (51 duplicatas...) d'une unique requête PowerQuery où tu développes dans chacune une seule table.

Au lieu d'extraire ainsi chaque table, tu pouvais directement dans Table 0 développer l'ensemble et non avoir une requête par table.
En quelques clics c'est fait et tu as le tout dans un unique onglet et un classeur bien plus léger.

Il y avait des double retours à la ligne dans plusieurs colonnes : j'ai remplacé par un seul.

Edit : une pseudo table à filtrer pour éviter la dernière ligne vide
 

Pièces jointes

Dernière édition:
RE

Il te suffit de regarder l'unique requête du fichier que j'ai joint : j'ai supprimé les requêtes table_1 à Table_51 et simplement modifié Table_0

Si tu coinces reposte

Il faudra néanmoins une requête par page mais on peut paramétrer je pense : je regarde et reviens
 
Dernière édition:
Re,

je vais fouiller car j’ai vu que tu avais filtrer … mais j’ai jamais modifié des tables. Est ce que ce genre de choses peut aussi fonctionner si j’ai plusieurs pages web?

p.s. j’ai fait 2 essais avec plusieurs pages web. pour le moment, je suis en difficultés pour qu’il trouve toutes les tables. Il me demande la ressource à laquelle acceder dans navigation mais pas les tables. Et si je pars sur paramètre, je vois toutes les tables mais j’arrive pas à les exploiter. Je fouille de mon côté.En tout cas, ton exemple m’aide énormément. Si je dois faire cela à chaque page web, je le ferais sans soucis. Si c’est est possible de l’automatiser, ce serait mieux.
 
Dernière édition:
Bonjour

J'ai récupéré les 70 pages soit plus de 33 000 lignes en une seule requête

Il faut un petit moment pour tout récupérer (5 minutes sont mon PC avec une connexion fibre rapide) mais cela fonctionne.

Si la source ne change pas, délier le résultat de la requête pour ne pas réimporter ces 33 182 lignes

Fichier trop gros donc à récupérer ici https://www.cjoint.com/c/KGzpvFcJoCc

Pour info le code M
VB:
let
    Source = Table.FromColumns({Lines.FromBinary(Web.Contents("https://inducks.org/publication.php?c=fr%2FJM"))}),
    #"Lignes filtrées" = Table.SelectRows(Source, each Text.Contains([Column1], "c1=JM")),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes filtrées", "URL", each Text.BetweenDelimiters([Column1],"=JM",""">all")),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Personnalisée ajoutée",{"URL"}),
    #"Personnalisée ajoutée2" = Table.AddColumn(#"Autres colonnes supprimées", "Pages", each Web.Page(Web.Contents("https://inducks.org/issue2.php?c=fr&c1=JM"&[URL]))),
    #"Pages développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée2", "Pages", {"Data"}, {"Data"}),
    #"Data développé" = Table.ExpandTableColumn(#"Pages développé", "Data", {"Code de l'histoire", "Titre", "Nombre de pages", "Auteurs", "Publications", "Personnages, commentaires"}, {"Code de l'histoire", "Titre", "Nombre de pages", "Auteurs", "Publications", "Personnages, commentaires"}),
   #"Valeur remplacée" = Table.ReplaceValue(#"Data développé","#(lf)#(lf)","#(lf)",Replacer.ReplaceText,{"Code de l'histoire", "Titre", "Nombre de pages", "Auteurs", "Publications", "Personnages, commentaires"})
in
    #"Valeur remplacée"
 
Dernière édition:
Bonsoir,

Désolé pour mon manque de nouvelles. J'ai du boucler un boulot avant les vacances.

J'ai regardé le code et j'ai essayé de l'adapter pour partir sur chaque numéro et non sur le listing par année. Cela me permettrait grâce à l'url, de pouvoir nommer chaque histoire par l'apparition (numéro du magazine).

Pour le moment, je n'y arrive pas mais je continue à fouiller. De même, j'aurais aimé trouvé une astuce pour le faire en automatique sur toutes les parutions françaises (avoir une énorme base de données) mais je ne sais pas si c'est faisable et surtout si excel supporterait cela.

Je continue à fouiller. Un gros merci pour ton aide. J'essaierais de l'appliquer à d'autres sites pour avoir un bon gros support pour mon projet.

Bonne soirée et encore merci du temps que tu prend pour m'aider.
 
Bonjour Chris,


Oui oui je confirme que ton travail fait ce que j'ai demandé. J'ai voulu pousser plus loin l'automatisation au lieu de taper à la main les numéros de magazine mais ça fait tout à fait ce que je souhaitais.

Un énorme merci. J'ai encore énormément de boulot sur ce projet et un projet professionnel sur excel qui me tord le cerveau.

Encore merci pour tout.
 
Bonsoir Chris,

Désolé je suis en vacances avec un accès trés limité à internet et j'ai testé le fichier sur excel online.

Effectivement tout se passe comme je le souhaitais. Je ne voyais pas la colonne publications.

Vraiment top. Tu m'a filé un gros coup de main.

A appliquer sur les autres magazines maintenant. Encore un énorme merci.
 
- 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
6
Affichages
624
Retour