Paramétrage "déporté" d'un TCD

Bonsoir,

J'essaye de réaliser, dans le cadre de mon travail, un reporting pour comparer les temps de main d'oeuvre réel d'un part et gammé d'une autre, j'ai donc 2 bases de données.

Pour les synthétiser, j'ai crée un onglet avec 2 TCD et chacun synthétise une des deux bases de données.

Mon soucis, c'est que je souhaite faire comme une sorte de menu, avec des boutons déportés où on paramètre directement les 2 TCD. Un peu comme les segments. Mais le soucis que j'ai avec les segments, c'est qu'on n'a pas de barre de recherche, ce qui est embêtant quand on a plusieurs centaines de codes articles --> impossible de rechercher rapidement celui sur lequel on veut bosser...

Du coup je voudrais savoir si on pouvait avoir des boutons filtres "déportés" du TCD ? J'ai essayé en plaçant mes paramètres sur l'encadrement filtre de l'assistant de configuration d'un TCD, mais impossible de le déplacer...

Je travaille sous excel 2010 et concernant mon niveau en VBA, il est nul... J'ai cherché sur internet, j'ai trouvé des codages et je n'y suis jamais arrivé, bref...

Merci à tous !

Bonjour

Pas compris ce que tu entends par "boutons filtres "déportés" du TCD" : déplacer le titre de colonne et sa liste déroulante ? Si oui pas possible.

Pour les cas où on a beaucoup de codes on peut ajouter une colonne à la source.

Par exemple pour des noms, l'initiale : un segment permet de sélectionner la lettre et du coup le segment des noms est peu rempli...

Fais un petit fichier exemple de quelques lignes pour chaque source de TCD et du menu schématisé tel que tu l'imagines.

Bonjour Chris,

Merci pour ta réponse, j'ai ré-créée mon classeur en enlevant toutes les données (remplacés par des données au hasard) et du coup, on retrouve l'onglet tableau de bord qui vient synthétiser mes 2 bases de données (dans les 2 derniers onglets).

Sur cet onglet tableau de bord, j'aimerais avoir un bouton sur le coté gauche "sélection des paramètres" (qui représente un peu mon menu), qui me permettrait de saisir le "PN Article" afin de réaliser le tri dans chacun des TCD qui se trouve sur la partie tout à droite de l'onglet tableau de bord.

Un bouton par TCD m'irait et un bouton pour les 2 TCD serait top. Je vais toujours utiliser le même PN pour les 2 TCD. L'idée est de croiser le PN article du TCD1 et du TCD2 afin de traiter les données relatives à chaque PN dans chacun des TCD.

Je ne sais pas si c'est possible..

Merci par avance !

20classeur-test.xlsx (851.42 Ko)

Bonjour

Tu disais qu'un segment sur l'article posait problème.

Tu veux chercher sur quoi, le code, la désignation ? (désignation qui n'est pas le même dans les 2 tableaux).

Si désignation, l'initiale de la désignation peut-elle être ajoutée sur l'une des sources ?

Sinon précise comment tu imagines la recherche...

Merci Chris pour ton aide.

Je cherche à trier le "PN article", pour les 2 TCD.

Le soucis, c'est qu'il faut imaginer que mes bases de données contiennent des milliers de PN. Le Segment ne me permet pas de rechercher un PN en particulier au milieu de toutes les possibilités que va m’énoncer le segment...

Du coup, j'imaginais une sorte de bouton où j'aurais pu saisir le PN et qui permettrait de trier le (ou les) TCD en fonction du PN que j'aurais saisi..

J'espère avoir été plus compréhensible...

RE

Tu sembles confondre trier et filtrer...

Si l'idée est juste de saisir un PN, par exemple en C9

Sub Filtre()
'
'
For Each PT In ActiveSheet.PivotTables
    With PT.PivotFields("PN Article")
        .ClearAllFilters
        Existe = False
        For Each Pi In .PivotItems
            If Pi.Caption = ActiveSheet.Range("C9").Text Then Existe = True: Exit For
        Next Pi
        If Existe = True Then
            For Each Pi In .PivotItems
                If Pi.Caption <> ActiveSheet.Range("C9").Text Then Pi.Visible = False
            Next Pi
        Else
            MsgBox "PN inexistant": Exit Sub
        End If
    End With
Next
End Sub

En effet, désolé pour mon vocabulaire trop approximatif...

Mais je viens d'essayer le code que tu as publié et ça marche trop trop bien !

L'idée était bien celle-ci !

Merci beaucoup encore !!

NB: Par contre, juste pour savoir, une liste déroulante avec tous les PN des deux bases de données (pour n'avoir qu'à sélectionner dedans) était possible ? Ou c'est dur à réaliser ?

Bonjour

A part la place que tient une liste par rapport à un Segment, la dérouler prend autant sinon plus de temps que de sélectionner dans un segment

Il faudrait créer une tableau des PN pour alimenter la source de la liste...

Tu peux copier coller tes colonnes source bout à bout puis en enlever les doublons.

Cependant si la liste évolue beaucoup au fil du temps il faudra faire cela par VBA...

Bonjour Chris,

Merci pour ta réponse, en effet, ce n'est pas intéressant, je me suis un peu égarer...

Ta macro fonctionne parfaitement et je te remercie encore, par contre mes deux bases de données semblent trop lourde... Il faut plus de 8 minutes pour trier un PN... Est-ce que tu aurais une idée de comment je pourrais améliorer ce temps ?

Si je fais le tri manuellement sur chaque TCD en saisissant le PN dans la barre de recherche, ça prend très peu de temps... Alors je ne comprend pas l'écart si grand de temps.. J'ai l'impression que la macro passe 1 à 1 les PN en les virant à chaque fois qu'ils ne correspondent pas, jusqu'à ne laisser que le bon PN...

Merci encore,

Bonjour,

Les tableaux ont combien de lignes ?

Tu ne peux pas les regrouper dans un seul, ce qui aiderait pour le TCD

P.

Bonjour

Oui dans un filtre de TCD il faut les tester un par un... ce qui effectivement n'est pas optimum...

Le code VBA correspondant à la recherche donne d'ailleurs le détail du masquage : je dis toujours que VBA va moins vite que ce que fait nativement Excel...

D'où l'idée de colonne de pré-filtrage comme l'initiale que j'avais évoquée...

Merci pour vos réponses ! J'ai un peu plus de 30 000 lignes sur une des deux bases de données et entre 5 et 10 000 sur la deuxième base...

Je pense pouvoir tout regrouper dans un onglet, c'est vrai que cela me permettrait d'économiser un TCD. Du coup, est-il nécessaire de re-modifier le codage VBA que Chris avait élaboré pour que la macro ne cible que le premier des 2 TCD ?

Merci Chris pour toutes ces infos, je suis vraiment une bille en macro... Je comprend mieux l'intérêt de ce que tu m'avais proposé avec la "colonne de pré-filtrage" mais j'ai encore du mal à réaliser si ça pourrait résoudre mon problème étant donné que les PN sont, je pense, générés aléatoirement par l'ERP de la société pour chacun des produits. J'ai peur de me retrouver avec un trop grand nombre de "famille de PN".

C'est-à-dire que dans l'idée, si j'arrive à faire fonctionner le fichier, l'idée est qu'il puisse servir de support en réunion, où plusieurs collaborateurs viendrait pour parler du/des produit(s) sur le(s)quel(s) ils interviennent. Ils saisiraient chaque PN et avec la macro, on obtiendrait de suite les infos. (pour le TCD du fichier test que j'avais mis, mais aussi des graphs et des tableaux)

Je pense que je vais partir sur l'idée de simplifier mon fichier avec une seule base de donnée, mais est-il nécessaire de reconfigurer la macro ?

Merci encore pour le temps que vous passez à essayer de m'aider !

Bonjour

Si tu mets le PN en champ de page mono selection : un simple currentPage=...

filtrera donc sera plus rapide... éventuellement précédé d'un find sur la table source pour prévenir un plantage du à une erreur de saisie...

Je dois modifier la macro selon les modifications que tu viens de me suggérer ?

Si oui, je crois devoir remplacer le "Pi caption" par "currentPages="

Mais pour le find sur la table Source...?

Merci encore en tous cas.

RE

Avec la champ PN en champ de page (et non plus de ligne)

    With PT.PivotFields("PN Article")
        .ClearAllFilters
        .CurrentPage=ActiveSheet.Range("C9").Text
    End With    
        

doit suffire

Rechercher des sujets similaires à "parametrage deporte tcd"