XL 2016 Pilotage TCD via Textbox dynamique

saidoush

XLDnaute Junior
Bonjour à tous,

je suis parent d'élève depuis longtemps et je souhaitais mettre en place un fichier avec un TCD qui recenserait les documents transmis par éléve.

Jusque là je me servais de segments, mais compte tenu du grand nombre d’élèves c'est... pénible.

je voudrais rentrer le nom de l'élève dans une texbox et que le tcd se filtre automatiquement sur son nom avec l'ensemble des documents remis en vert et manquant en rouge.

Merci et profitez bien de vos vacances!!!




j'ai ça comme ébauche :

pour la texbox :

Private Sub TextBox1_Change()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim searchStr As String

Set ws = ThisWorkbook.Sheets("Collège...")
Set pt = ws.PivotTables("TCDélèves")
Set pf = pt.PivotFields("Noms")

searchStr = TextBox1.Text


For Each pi In pf.PivotItems
If LCase(pi.Name) Like LCase("*" & searchStr & "*") Then
pi.Visible = True
Else
pi.Visible = False
End If
Next pi
End Sub

pour le bouton :

Sub FilterPivotTable()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim searchStr As String

Set ws = ThisWorkbook.Sheets("Collège...")
Set pt = ws.PivotTables("TCDélèves")
Set pf = pt.PivotFields("Noms")

searchStr = ws.OLEObjects("TextBox1").Object.Text


For Each pi In pf.PivotItems
If LCase(pi.Name) Like LCase("*" & searchStr & "*") Then
pi.Visible = True
Else
pi.Visible = False
End If
Next pi
End Sub
 

Pièces jointes

  • Classeur1.xlsx
    17.9 KB · Affichages: 8
Dernière édition:

goube

XLDnaute Impliqué
Bonjour,
C'est bien le cas, le TCD est filtré sur le nom en C2 de l'onglet TdB.
Cordialement
EDIT :
J'ai modifié le TCD pour avoir le détail des lignes.
 

Pièces jointes

  • saidoush1.xlsm
    35.8 KB · Affichages: 3
Dernière édition:

saidoush

XLDnaute Junior
Bonjour,
C'est bien le cas, le TCD est filtré sur le nom en C2 de l'onglet TdB.
Cordialement
EDIT :
J'ai modifié le TCD pour avoir le détail des lignes.
Goube😭

j'en pleure...c'est de mieux en mieux, mais j'ai mis tout l'après-midi à tenter de le reproduire,... en vain.

j'aime bien l'approche avec power query mais je ne maitrise pas le language M. J'arrive à nettoyer, organiser et consolider mais quand il s'agit de rentrer dans le code, je suis perdu.

La requete VENDEUR, relativement simple à appréhender (on conserve la colonne vendeur triée sans doublon),

la colonne ou la case recherche moi j'ai ça.. : = Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]

toi tu as ça : = Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]{0}[Column1]

1722105159630.png


alors pour Data je ne comprends pas comment tu en arrive là :

1722105335916.png


Et pour ça, se sont des formules à savoir utiliser :
1722105522908.png


J'aurais bien voulu avoir une vidéo ou être derrière toi quand tu le faisais...

encore Bravo!!!
 

Pièces jointes

  • 1722105068169.png
    1722105068169.png
    10.2 KB · Affichages: 0

goube

XLDnaute Impliqué
re,
VB:
pour être exact       
se positionner sur C2 de l'onglet TdB,
Onglet Données, A partir d'un tableau ou d'une plage       
Ce qui génère dans la barre de formule       
= Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]       
Clic droit sur la ligne 1, Dril-down   
Ce qui génère une nouvelle étape       
dans la barre de formule       
= Source{0}[Column1]       
On recopie {0}[Column1] à la fin de = Excel.CurrentWorkbook(){[Name="_Choix"]}[Content] (ce qui correspond à Source)     
et l'on obtient qu'une seule étape       
= Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]{0}[Column1]

Si tu filtres sur la colonne vendeur tu vas obtenir cela
Code:
= Table.SelectRows(Source, each ([Vendeur] = "AUORA"))

Il suffit de remplacer les données après le = par _Choix
Code:
= Table.SelectRows(Source, each ([Vendeur] =_Choix))
et le tour est joué.
 
Dernière édition:

saidoush

XLDnaute Junior
re,
VB:
pour être exact   
se positionner sur C2 de l'onglet TdB,
Onglet Données, A partir d'un tableau ou d'une plage   
Ce qui génère dans la barre de formule   
= Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]   
Clic droit sur la ligne 1, Dril-down
Ce qui génère une nouvelle étape   
dans la barre de formule   
= Source{0}[Column1]   
On recopie {0}[Column1] à la fin de = Excel.CurrentWorkbook(){[Name="_Choix"]}[Content] (ce qui correspond à Source) 
et l'on obtient qu'une seule étape   
= Excel.CurrentWorkbook(){[Name="_Choix"]}[Content]{0}[Column1]

Si tu filtres sur la colonne vendeur tu vas obtenir cela
Code:
= Table.SelectRows(Source, each ([Vendeur] = "AUORA"))

Il suffit de remplacer les données après le = par _Choix
Code:
= Table.SelectRows(Source, each ([Vendeur] =_Choix))
et le tour est joué.
ok!!
j'arrive à comprendre le principe.

Comment on passe de la requete de la base de donnée filtré Vendeur via _choix au TCD du TdB???

je penses pas avoir les capacités pour toutes ces choses imbriquées power query, formules excel, tcd.

Mais tu as mon respect...

Saïd.
 
Dernière édition:

saidoush

XLDnaute Junior
Bonjour, ta démo m'a permis de débloquer un projet qui date de plus de 2 ans.
Je réfléchis encore à la manière dont je pourrais te remercier! Peut-être passer en bas de chez toi avec des chocolats.
Mon sentiment est que lorsque je suis bloqué je considère Excel comme une grosse M...., et lorsque cela abouti finalement, cette invention est comme le meilleur des alliés... un peu comme ce que pense mon patron à mon égard...

GOUBE je te souhaite une longue vie!!!
Ton expertise et expérience sont une richesse que tu partage sans avarice.
Encore MERCIIIIII....

(Je peaufine, je post et je clôture la discussion.)

Saïd.
 

Discussions similaires

Réponses
2
Affichages
520

Statistiques des forums

Discussions
313 866
Messages
2 103 082
Membres
108 521
dernier inscrit
manouba