[Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
SolPro
Membre OOrganisé
Membre OOrganisé
Messages : 84
Inscription : 31 juil. 2022 12:38

[Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Message par SolPro »

Bonsoir à tous
J'ouvre ce message en mettant en avant que j'utilise depuis peu l'extension zBasic suite à ce post ; effectivement, cela est un peu plus facile pour moi.

Je bloque sur un truc, à savoir que je veux faire un filtre avec plusieurs choix et non un seul
Voici le code utilisé modifié légèrement par mes soins(à partir de celui fourni par Dude)
et je n'arrive pas à mes fins, à savoir obtenir en filtre le champ "agir ?" et en donnant 2 choix possible "oui" ou bien "3jours".

Là, ce n'est qu'un exemple mais dans mon tableau final, j'ai à peu près 500 communes et je veux filtrer/conserver une dizaine d'entre elle. Dois-je "afficher par Sélection" la dizaine et par Masque Item, les 490 autres qui seront cachés ! Cela fait 500 lignes au programme du coup donc je pense que je ne suisp as sur la bonne trajectoire.
Inversement, j'aurai un 2nd TCD qui lui affichera les 490 communes et cachera les 10 autres.

Dans mon tableau final, le filtre contiendra non pas du texte mais un chiffre- Est-ce idem ?

Je veux "juste" indiquer mes 10 choix et hop les autres sont donc non pris en compte ! Je bloque
Mon code

Code : Tout sélectionner

Sub Main
	GlobalScope.BasicLibraries.loadLibrary ("zBasic")
	'zBiblio.Assistant()
	
	
	oTCD = zTCD.Demarre("TCD_zBasic", "Brut", "A1:G21")

	zTCD.Parametre(oTCD, "total_colonnes", 1)
	zTCD.Parametre(oTCD, "total_lignes", 1)	
	
	zTCD.Champ(oTCD, "ligne", 1) 'Nom
	zTCD.Champ(oTCD, "ligne", 3) 'Titre
	zTCD.Champ(oTCD, "ligne", 4) 'Categorie
	zTCD.Champ(oTCD, "page", 5) 'Agir_?
	zTCD.Champ(oTCD, "page", 2) 'Objet
	zTCD.Champ(oTCD, "donnée", 7) 'Montant du principal

	zTCD.Info(oTCD, "filtre", 5, "selection", "oui")
'	zTCD.Info(oTCD, "filtre", 5, "selection", "3jours")	
	zTCD.Info(oTCD, "filtre", 2, "masque_item", "ordures menageres 2eme semestre 2022")
	zTCD.Info(oTCD, "filtre", 4, "masque_item", "P_M_Dt_Public")
	zTCD.Info(oTCD, "filtre", 4, "masque_item", "P_M_Dt_Prive")

	zTCD.Execute(oTCD, "A_obtenir_par_macro", "A14")
End Sub
je joins mon fichier qui intègre les modules zBasic.
donnee (1).ods
Merci pour l'aide et les conseils.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par SolPro le 11 juin 2024 20:34, modifié 2 fois.
LibreOffice 25.2.3.2 (x64) et Windows 10 Pro (personnel)
LibreOffice 25.2.3.2 (x86-64) et Windows 11 Pro (professionnel, obligatoire)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26242
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] zBasic, et multi-filtres

Message par Dude »

Salut,
SolPro a écrit : ↑18 mai 2024 17:35Là, ce n'est qu'un exemple mais dans mon tableau final, j'ai à peu près 500 communes et je veux filtrer/conserver une dizaine d'entre elle.
Un tableur ne me semble pas une bonne solution pour ce qui s'apparente à des traitements de base de données.

Ta macro intègre la bibliothèque, la ligne GlobalScope n'a donc plus d'intérêt.

Donne nous également la structure exacte de ton TCD lorsqu'il a été conçu manuellement avec l'assistant.
Parce qu'avec les paramètres que tu donnes, je n'arrive pas au même résultat.
S'il s'agit de masquer des éléments, je ne vois pas l'intérêt de la sélection dans le filtrage.
SolPro
Membre OOrganisé
Membre OOrganisé
Messages : 84
Inscription : 31 juil. 2022 12:38

Re: [Calc] zBasic, et multi-filtres

Message par SolPro »

Bonsoir et merci pour la réponse.
Le fichier original vient d'un fichier CSV.

J'ai mis le "vrai" tableau anonymisé

Je fournis le tableau avec 3 onglets dont un nommé "Obtenu par assistant" --> c'est ce que je veux et que j'obtiens avec l'assistant TCD.
Je veux avoir la même chose avec une macro. Au départ, j'ai essayé avec des macros classiques puis sur vos conseils avec zBasic.(3ème feuille)

EN fait, le paramètre "selection" de zbasic accepte-t-il plusieurs choix possibles ?

je ne parviens pas à ce que je veux
Merci encore pour votre aide et votre regard éclairé
Recette_solpro_v2.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.2.3.2 (x64) et Windows 10 Pro (personnel)
LibreOffice 25.2.3.2 (x86-64) et Windows 11 Pro (professionnel, obligatoire)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26242
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] zBasic, et multi-filtres

Message par Dude »

SolPro a écrit : ↑26 mai 2024 18:08 c'est ce que je veux et que j'obtiens avec l'assistant TCD
Et donc, il faudrait répondre à ma demande précédente :
Dude a écrit : ↑20 mai 2024 13:35 Donne nous également la structure exacte de ton TCD lorsqu'il a été conçu manuellement avec l'assistant.
Ajoute des copies écran pour chaque étape que l'on puisse voir comment tu t'y prends.



SolPro a écrit : ↑26 mai 2024 18:08EN fait, le paramètre "selection" de zbasic accepte-t-il plusieurs choix possibles ?
Il me semble t'avoir déjà répondu :
Dude a écrit : ↑20 mai 2024 13:35S'il s'agit de masquer des éléments, je ne vois pas l'intérêt de la sélection dans le filtrage.


SolPro a écrit : ↑26 mai 2024 18:08 Le fichier original vient d'un fichier CSV.
Ca ressemble à un problème XY. Pourquoi le CSV ne contient-il pas les informations déjà filtrées ?
SolPro
Membre OOrganisé
Membre OOrganisé
Messages : 84
Inscription : 31 juil. 2022 12:38

Re: [Calc] zBasic, et multi-filtres

Message par SolPro »

Bonsoir et merci pour la réponse.
J'ai fourni un fichier dans lequel on peut voir ce que j'attends donc du coup, inutile pour moi de fournir une copie d'écran. J'aurai fourni une copie d'écran, il m'aurait été demandé de fournir le fichier ! C'est le problème XY!
J'ai fourni le fichier et 0 téléchargement donc ... à quoi cela sert-il ?

Le fichier ne contient pas les données filtrées car :
1- cela devra être fait sur un nouveau fichier
2 - certaines personnes ne disposent pas du savoir pour filtrer

d'où ma volonté d'automatiser tout cela.
Je passe en résolu et abandonne l'idée du Zbasic qui ne convient pas à ce que je veux faire.
Je n'ai pas trouvé réponse à mon problème ; pas grave au demeurant mais je trouve une certaine condescendance dans vos remarques !
Dernière modification par SolPro le 11 juin 2024 20:35, modifié 1 fois.
LibreOffice 25.2.3.2 (x64) et Windows 10 Pro (personnel)
LibreOffice 25.2.3.2 (x86-64) et Windows 11 Pro (professionnel, obligatoire)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26242
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] zBasic, et multi-filtres

Message par Dude »

SolPro a écrit : ↑11 juin 2024 17:52 J'ai fourni le fichier et 0 téléchargement donc ... à quoi cela sert-il ?
Ca sert à comprendre parce que comme je te l'ai dit :
Dude a écrit : ↑20 mai 2024 13:35 avec les paramètres que tu donnes, je n'arrive pas au même résultat.
Ne reporte pas la faute de non réponse sur les autres quand tu ne fournis pas les éléments qu'on te demande.


SolPro a écrit : ↑11 juin 2024 17:52 pas grave au demeurant mais je trouve une certaine condescendance dans vos remarques !
Ici, tu as affaire à des bénévoles qui ne sont pas concernés par ton problème.
Commence déjà par aider d'autres personnes et tu constateras la difficulté de la tâche.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12895
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Résolu] [Calc] zBasic, et multi-filtres

Message par Bidouille »

Bonjour,
SolPro a écrit : ↑26 mai 2024 18:08 EN fait, le paramètre "selection" de zbasic accepte-t-il plusieurs choix possibles ?
La documentation sur zTCD.Info indique qu'il s'agit d'un item unique :
.
capture.jpg

D'ailleurs si vous utilisez XRay sur cet objet, vous constaterez qu'il s'agit bien d'un type string (chaîne) :
.
capture.png

Donc comme l'indique Dude, il faut masquer les éléments via le filtre MASQUE_ITEM, c'est effectivement compliqué si la liste est longue mais l'API ne propose pas l'inverse.


NB : j'ai corrigé le titre pour qu'il reflète le problème que vous exposez
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12895
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Message par Bidouille »

zBasic v3.0.1 intègre deux nouveaux paramètres de filtre pour zTCD.Info. Vous pouvez donc désormais agir en supprimant tous les items d'un filtre (MASQUE_TOUT) puis n'afficher que ceux souhaités (ACTIVE_ITEM).

SolPro a écrit : ↑18 mai 2024 17:35 Je veux "juste" indiquer mes 10 choix et hop les autres sont donc non pris en compte !
Cela devrait donc résoudre votre problème.
SolPro
Membre OOrganisé
Membre OOrganisé
Messages : 84
Inscription : 31 juil. 2022 12:38

Re: [Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Message par SolPro »

Bonsoir
Merci pour la mise à jour de l'extension.

J'ai testé ce soir et cela fonctionne à merveille.
Merci encore pour le partage des connaissances et compétences.
LibreOffice 25.2.3.2 (x64) et Windows 10 Pro (personnel)
LibreOffice 25.2.3.2 (x86-64) et Windows 11 Pro (professionnel, obligatoire)
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12895
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Message par Bidouille »

SolPro a écrit : ↑17 juin 2024 20:04 J'ai testé ce soir et cela fonctionne à merveille.
Merci de fournir un document et publier la macro.
Cela permettra à d'autres qui tomberont sur ce fil d'avoir une solution clé-en-main.
SolPro
Membre OOrganisé
Membre OOrganisé
Messages : 84
Inscription : 31 juil. 2022 12:38

Re: [Résolu][Calc] Tableau croisé : multi-filtres pour affichage d'items

Message par SolPro »

Bonsoir
Oui, voici le code et le fichier qui va bien

Cela me permet de filtrer sur différents champs en utilisant la version zBasic3.01

Merci encore.
Recette_solpro_v3_zBasic301.ods

Code : Tout sélectionner

Sub Main
	'GlobalScope.BasicLibraries.loadLibrary ("zBasic 3,01")
	'zBiblio.Assistant()
	
	zTCD.Supprime("TCD_zBasic", "A_obtenir_par_macro") 'supprime le tcd "tcdzBasic" se trouvant sur la feuille "a obtenir..."
	
	oTCD = zTCD.Demarre("TCD_zBasic", "Brut", "Plage_tcd")

'	Parametres
	zTCD.Parametre(oTCD, "BOUTON_FILTRE", 1) '1 affiche 0 n'affiche pas
	zTCD.Parametre(oTCD, "total_colonnes", 1)
	zTCD.Parametre(oTCD, "total_lignes", 1)	

'	Champs à faire apparaitre en ligne		
	zTCD.Champ(oTCD, "ligne", 33) 'Date_arrivee
	zTCD.Champ(oTCD, "ligne", 5) 'Libelle
	zTCD.Champ(oTCD, "ligne", 7) 'Num bordereau
'	zTCD.Champ(oTCD, "ligne", 10) 'Numero titre
	zTCD.Champ(oTCD, "ligne", 28) 'Observations
	zTCD.Champ(oTCD, "ligne", 34) 'date mise en instance

'	Mettre un champ en "données" pour des valeurs notamment
	zTCD.Champ(oTCD, "DONNEE", 24) 'Montant TTC	
	
	'Mettre un ou des champs en "filtre" sur le haut du tableau
	zTCD.Champ(oTCD, "page", 6) 'Num BC
	zTCD.Champ(oTCD, "page", 9) 'Nature du titre
	
'Zone de définitions des filtres (2 -> un sur le BC et l'autre sur la nature du titre
'	Il faut conserver uniquement le champ 6 (bC) avec les codes 11300-11400-11500-11600
'	cela doit permettre de voir uniquement Bordeaux Marseille LIlle et Paris
 
	'Pour cela  il faut en 1er "ne rien sélectionner puis en 2nd afficher ce que l'on veut
	'	'1-On masque tout

	zTCD.Info(oTCD, "filtre", 6, "MASQUE_TOUT")
	
		'2 On affiche uniquement les champs désirés

	zTCD.Info(oTCD, "filtre", 6, "ACTIVE_ITEM", "11300")
	zTCD.Info(oTCD, "filtre", 6, "ACTIVE_ITEM", "11400")
	zTCD.Info(oTCD, "filtre", 6, "ACTIVE_ITEM", "11500")
	zTCD.Info(oTCD, "filtre", 6, "ACTIVE_ITEM", "11600")

'idem mais sur un 2nd filtre sur la nature du titre (uniquement Nat_01 et Nat_02)
	zTCD.Info(oTCD, "filtre", 9, "MASQUE_TOUT")
	
	zTCD.Info(oTCD, "filtre", 9, "ACTIVE_ITEM", "Nat_01")
	zTCD.Info(oTCD, "filtre", 9, "ACTIVE_ITEM", "Nat_02")


	zTCD.Execute(oTCD, "A_obtenir_par_macro", "A5")
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.2.3.2 (x64) et Windows 10 Pro (personnel)
LibreOffice 25.2.3.2 (x86-64) et Windows 11 Pro (professionnel, obligatoire)