Création tableau récapitulatif dynamique

Bonjour à tous et à toutes,

Tous d'abord, sachez que je suis un novice en codage excel et réalisation de macro. Je parviens à faire des choses simples pour le moment. Mais la, je sèche...

Voila ce que je cherche à faire :

créer un tableau récapitulatif dynamique sur un onglet indépendant à partir d'un premier onglet ou l'on viens intégrer plusieurs tableaux récapitulatif crées précédemment en interne (ce nombre de tableaux est variable et ces derniers sont mis sous forme de tableau ce qui permets à Excel, si je ne m'abuse, de repérer les différentes données en les classant).

- Bon à savoir : ces tableaux seront toujours fixe (même en tête et meme nombre de colonne/ligne)

J'aimerais faire quelque chose qui fonctionne comme cela :

Onglet 1 =

  • Bouton dynamique à cliquer
  • Enregistrement sous du fichier.
  • Sécurisation de l'ensemble du premier onglet (1er onglet plus modifiable)
Onglet 2 =

- Création du tableau récapitulatif dynamique à partir de la ligne X (il y aura un titre, cette page est destiné à être imprimer).

Pensez vous pouvoir d'aider svp?

Ci joint un exemple simple du fichier.

39exemple-simple.xlsx (13.64 Ko)

Bonjour Mickey le forum

ton fichier en retour

a+

Papou

49mickey-v1.xlsm (28.44 Ko)

Bonjour,

Il me semble qu'un seul TCD aurait surement suffit à présenter le récap,

Cordialement,

Bonjour à tous

Solution sans VBA par quelques lignes de PowerQuery (intégré à 2016) : détection automatique des tableaux du classeur et consolidation, puis TCD

On pourrait aussi faire une simple liste mais dans ce cas, comme elle est restituée sous forme de tableau, il faut donner un nom particulier au tableau résultant et le filtrer dans Powerquery afin qu'il ne se consolide pas lui-même...

Merci a vous 3 pour vos retours. Vous etes géniaux.

Edit : En y réfléchissant, je pense plus partir sur la solution de Papou. L'ensemble étant plus simple pour un utilisateur lambda (il n'a qu'un bouton à cliquer à ca ce fais tous seul ) et vu que ce dernier ne sera pas utilisé que par moi. Je connais certaines personnes qui vont perdu et refuserons de l'utiliser rien qu'en voyant un TCD (Bon j'avoue je ne sais même pas comment le faire moi même, enfin si, mais pas le mettre en forme, mais ça c'est un complexe que je verrais plus tard )

Papou, au final il manque deux petites choses (enfin j'espère ) peux tu mettre sous forme le tableau créer en Stryle de Tableau Clair 15 et insérer le tableaux à partir de la ligne 8.

En passant par l'enregistreur de macro j'obtiens ce code pour mettre en forme :

    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$H$9:$M$16"), , xlYes).Name = _
        "Tableau2"
    Range("Tableau2[#All]").Select
    ActiveSheet.ListObjects("Tableau2").TableStyle = "TableStyleLight15"
    Range("G15").Select

Mais la question c'est comment l'intégrer à ton code... J''ai bien essayer de bidouiller un peu mais je ne vois pas comment l'intégrer.

re

En y réfléchissant, je pense plus partir sur la solution de Papou. L'ensemble étant plus simple pour un utilisateur lambda (il n'a qu'un bouton à cliquer à ca ce fais tous seul ) ...

Rien n'empêche de faire un bouton qui actualise tout et ce sera tout aussi transparent...

78chris,

Je reste bien entendu ouvert. La chose qui me fait peur c'est mes collègues quand il clique sur le TCD ils auront le gestionnaire qui va s'ouvrir. Et je les connais il auront peur de faire quelque chose de mal. J'espère que tu vois ou je veux en venir...

Après je reste tout à fait ouvert, je ne demande qu'à voir. Si tu peux me faire ça pour que je vois ce serais super gentil.

Et également si tu veux bien, m'expliquer comment je peux transposer l'exemple que j'ai donner dans me fichier entreprise (que je ne préfère pas donner ici pour des raisons de confidentialité)

Re

Sur un TCD on peut masquer le volet liste des champs (je suppose que c'est ce que tu appelles gestionnaire) : soit en la fermant avec la croix, soit clic droit, dans le TCD, Masquer la liste des champs... Elle ne reviendra pas tant qu'on ne l’appellera pas !

Si tu veux copier la requête dans ton classeur il faut que tu la récupère : Onglet Données, Afficher les requêtes puis double clic sur Conso : tu te retrouves dans l'interface PowerQuery.

Depuis l'onglet Accueil : Editeur avancé.

Tu copies toutes les lignes, tu fermes l'éditeur avancé par la croix, idem pour PowerQuery.

Tu te places sur ton classeur, Onglet Données, Nouvelle requête, A partir d'autres sources, Requête vide : tu te retrouves dans l'interface PowerQuery.

Depuis l'onglet accueil : Editeur avancé.

Tu supprimes le contenu et tu colles.

Tu fermes l'éditeur avancé par OK

Tu renommes la requête Conso.

Tu sors par le premier bouton en haut à gauche, Fermer et charger dans, Créer uniquement la connexion, Charger.

Depuis la cellule où tu veux le résultat (B5) : Insertion TCD, Utiliser source de données externe, Choisr la connexion : sélectionner Conso.

Puis construire le TCD.

Bonjour Mickey le forum

content que ma solution te plaise, même si certain n'aime pas le vba!!!

bonne journée

Papou

Re

...content que ma solution te plaise, même si certain n'aime pas le vba!!!...

Pour ma part j'adore le VBA quand il fait ce qu'on ne peut pas faire simplement et rapidement par les fonctionnalités intégrées...

Donc je ne critique pas ton code (j'en ai pondu pas mal également...) mais donne une alternative...

Mais tu sembles, toi, allergique à PowerQuery, on dirait...

Re

Sur un TCD on peut masquer le volet liste des champs (je suppose que c'est ce que tu appelles gestionnaire) : soit en la fermant avec la croix, soit clic droit, dans le TCD, Masquer la liste des champs... Elle ne reviendra pas tant qu'on ne l’appellera pas !

Si tu veux copier la requête dans ton classeur il faut que tu la récupère : Onglet Données, Afficher les requêtes puis double clic sur Conso : tu te retrouves dans l'interface PowerQuery.

Depuis l'onglet Accueil : Editeur avancé.

Tu copies toutes les lignes, tu fermes l'éditeur avancé par la croix, idem pour PowerQuery.

Tu te places sur ton classeur, Onglet Données, Nouvelle requête, A partir d'autres sources, Requête vide : tu te retrouves dans l'interface PowerQuery.

Depuis l'onglet accueil : Editeur avancé.

Tu supprimes le contenu et tu colles.

Tu fermes l'éditeur avancé par OK

Tu renommes la requête Conso.

Tu sors par le premier bouton en haut à gauche, Fermer et charger dans, Créer uniquement la connexion, Charger.

Depuis la cellule où tu veux le résultat (B5) : Insertion TCD, Utiliser source de données externe, Choisr la connexion : sélectionner Conso.

Puis construire le TCD.

Merci pour ton retour et tes explications. J'essaie tous ca et je reviens vers toi.

EDIT : j'ai fais tous ce tu as dis, mais j'ai un message d'erreur (Exception de HRESULT : des nombres)

Bonjour Mickey le forum

content que ma solution te plaise, même si certain n'aime pas le vba!!!

bonne journée

Papou

Papou, pour tous te dire j'essaie depuis quelques temps à partir d'une base et de créer un classeur entièrement automatiser. Mon classeur actuel comporte déja pas mal de VBA (toute l'automatisation est conçu grace à ça même si ils ce limite à inserer certains tableaux à certain endroits )

Je suis pas mal avancer, il me reste les plus compliquer à mettre en oeuvre, je risque donc d'avoir besoin d'aide de ton savoir faire par la suite, s tu le veux bien, j''aimerai vraiment pousser la chose. Notamment, deux grosse macro :

  • La premier pour créer un tableau par insertion dynamique par bouton qui ce remplirais partiellement en allant rechercher les résultats du récapitulatif.
  • La seconds pour créer cette fois ci un tableau toujours par insertion dynamique par bouton qui ce remplirais entièrement tous seul en allant reprendre certains résultats dans plusieurs onglets différents du classeur. Sachant que dans une de ces cellules du futur tableau à insérer, il devra faire une recherche dans une base de donnée interne au classeur.

PS : j'aime les boutons ils sont simple, ludique et marque une étape à réaliser manuellement avant de passer à autre chose

Pense tu que c'est possible?

Voili Voilou

RE

EDIT : j'ai fais tous ce tu as dis, mais j'ai un message d'erreur (Exception de HRESULT : des nombres)

Les "nombres" sont le numéro d'erreur justement donc sans ...

Par ailleurs il faudrait voir sur quelle ligne de la requête (volet de droite de l'interface PowerQuery) cela se produit... ou si c'est à la création du TCD.

Sans plus d'infos ni même une copie d'écran, on ne peut avancer.

L'exemple est-il vraiment représentatif du réel ?

Sur ton exemple, cela fonctionnant parfaitement, il est donc probable qu'il ne l'est pas de ton fichier réel.

Le cahier des charges s’alourdissant, et préférence étant manifestement donnée à VBA, laisse béton... on ne peut courir deux lièvres en même temps...

Le cahier des charges s’alourdissant, et préférence étant manifestement donnée à VBA, laisse béton... on ne peut courir deux lièvres en même temps...

Comme tu le sent. Si tu pense qu'il est préférable de continuer en VBA.

L'exemple était représentatif. Hormis les noms des onglets qui diffères et la quantité de tableaux.

Pour expliqué clairement le fonctionnement du premier onglets :

  • J'ai un titre (reprenant les informations de l'affaire traité)
  • 2 boutons en VBA
x Le premier insère des tableaux vierges les uns à la suite des autres.

x Le second un simple bouton pour faire une recherche sur la feuille (vous me direz il y a ctrl+f pour ça mais j'ai des collègues qui ne connaissent pas cette fonction )

Concernant les tableaux insérer,

A chaque insertion j'ai 2 types distinct de tableau qui s'insère. Le premier étant un tableau de calcul (mis sous forme de tableau hors en tête) car ils comportes divers informations et calculs (catégories, désignations, un, des colonnes pour les calculs etc..) Du coup il sont inexploitable car je ne peux pas extraire les quelques informations que je veux à savoir les titres et le résultat du calcul.

Le seconds est un tableau récapitulatif ou je met les infos que je veux extraire du premier tableau. Ce dernier est caché sur la feuille (écriture blanche sur fond blanc).

Le soucis vient peut être de là (2 types de tableaux) il faudrait ce limiter à rechercher seulement le tableau caché.

Vous me direz, que je suis partis très loin et que c'est barbare comme méthode mais c'est la seul solution que j'ai trouvé...

Enfin, si tu veux continuer et connaitre l'erreur je peux te transmettre les screens du message.

RE

La requête traite TOUS les tableaux structurés du classeur, sensés être identiques selon ton 1er post "ces tableaux seront toujours fixe (même en tête et même nombre de colonne/ligne)"

Si effectivement il y a plein d'autres tableaux de structures différentes, la requête ne peut fonctionner en l'état.

(Si tes tableaux sont les uns au dessus des autres le code de papou ne doit pas marcher en l'état non plus)

De toute évidence ton projet n'est pas stabilisé : tu analyses et codes en même temps, ce qui n'est pas le process idéal.

Par ailleurs pour découvrir PowerQuery il faut un minimum de temps et de disponibilité d'esprit à y consacrer.

Pratiquant les bases de données (les vraies pas juste les listes de données Excel), pas mal de fonctionnalités avancées d'Excel, le VBA, PowerPivot (un peu mais de moins en moins), PowerQuery (de plus en plus) qui tous deux rejoignent la logique BD, j'essaye de tirer le meilleur parti des possibilités.

Si tu as déjà des tas de modules VBA, il est effectivement difficile de redécouper ton projet entre plusieurs approches, d'où ma remarque.

Bonjour Chris78 le forum

Non pas du tout, comment je pourrais être allergique, puisque je ne le possède pas!!!

Par contre je suppose que vu vos post à tous, cela doit être un outil intéressant.

Mais après si je l'avais rien ne prouve que je saurais l'utiliser.!!!

Une certitude, je fais tout en vba et j'arrive à faire exactement ce que je veux alors il est vrai que je ne cherche pas plus loin

J'ai déjà essayé d'aller lire des posts qui traite du sujet, pour voir ce que je pourrais en tirer, mais je n'ai pas bien compris et j'ai laissé tombé

C'est comme les TCD, sous 97 et 2003 j'en faisais, et des que 2010 est arrivé plus moyen d'en faire comme je le voulais, cela te paraît certainement très con mais voilà.

Avec Vba je fais ce que je veux sans me casser la tête.

bonne journée

A+

Papou

RE

@paritec.

Le changement d'interface, ruban et volets, a effectivement changé l'approche à partir de 2007 (version pas finie) mais à partir de 2010 les TCD ont vraiment évolué avec des possibilités qu'ils n'avaient pas dans 2003 (où l'assistant était devenu moins intuitif que sur 2000).

Le volet pour construire les TCD est, je trouve, plus intuitif pour ceux qui débutent dans ce domaine.

On peut cependant si on y tient, continuer à les faire comme dans 2003 : l'assistant reste accessible et le déplacement manuel des champs sur l'onglet aussi.

Ayant donné des cours sur toutes les versions, je sais que la logique n'a pas fondamentalement changé et j'ai vu ce que les stagiaires pigeaient bien ou pas, vite ou pas, selon les versions.

Mais c'est surtout les segments qui sont une véritable avancée à partir de 2010, ainsi que la combinatoire tableaux (ListObjets), initialisée sur 2003, et TCD .

Si cela te dit, on peut échanger hors forum pour lever tes réticences .

Pour PowerQuery, je n'ai pas pigé tout de suite toutes les possibilités et en ai d'ailleurs découvertes pas mal ici même via les exemple de Jean Eric, mais j'apprécie de plus en plus.

Merci de ton retour, à suivre...

Bonjour Chris78 le forum

Si cela te dit, on peut échanger hors forum pour lever tes réticences

Pas de souci pour moi au contraire, si tu as du courage!!!

car je suis un pénible, je ne fais rien que je ne comprends pas à fond, alors cela rends la comprenotte difficile.

mais ce qui est acquit l'est définitivement.

Je voulais te demander de me faire un exemple de fichier avec les explications pour utiliser et surtout comprendre, mais tu n'as pas de possibilité d'être contacté en messagerie privé!! ( je viens de regarder et j'ai télécharger power pour mon 2010 c'est gratuit alors j'ai chargé, et je vais maintenant l'installer) autant dire que je suis prêt à découvrir..... (je n'ai pas dit que j'allais comprendre, mais je vais essayer)

Tu peux toi me passer un mail sans problème, comme cela j'aurai ton adresse.

a+

Papou

Rechercher des sujets similaires à "creation tableau recapitulatif dynamique"