Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/11/2024, à 04:43

claudius723

Filtre suivant choix dans liste déroulante

Bonjour, j'aimerais afficher une liste de données après avoir fait un choix dans une liste déroulante. (Statut)
Pour l'instant je me débrouille avec plusieurs macro et quelques boutons, mais à long terme je ne pourrais pas créer autant de boutons ni de macro.
Il me faudrait donc une macro unique commandée par le choix dans la liste déroulante, j'ai déjà préparé un contrôle de formulaire avec liste déroulante, mais je ne sais pas comment associer la macro.
La macro est écrite avec le langage zBasic, je souhaiterais après l'affichage des résultats,  imprimer cette liste.
Rappel du choix du statut recherché dans la cellule B2,
Pouvez vous m'aider ?
Les macros:

Sub FiltrerAFN
 GlobalScope.BasicLibraries.loadLibrary ("zBasic")
Dim oFiltre as variant
   oFiltre=zFiltre.Demarre("Donnees", "A2:D30")
   zFiltre.Parametre(oFiltre, "entete", "N") 
 zFiltre.Colonne(oFiltre, 4 ,"", 14, "N", "AFN")
   zFiltre.Execute(oFiltre, "ListeParStatut", "A5")
End Sub
Sub FiltrerSDF
 GlobalScope.BasicLibraries.loadLibrary ("zBasic")
Dim oFiltre as variant
   oFiltre=zFiltre.Demarre("Donnees", "A2:D30")
   zFiltre.Parametre(oFiltre, "entete", "N") 
 zFiltre.Colonne(oFiltre, 4 ,"", 14, "N", "SDF")
zFiltre.Execute(oFiltre, "ListeParStatut", "A5")
End Sub

Je vais envoyer le fichier dans une nouvelle fenêtre.


Cordialement
Claudius723

Hors ligne

#2 Le 10/11/2024, à 04:53

claudius723

Re : Filtre suivant choix dans liste déroulante

Voici le lien pour visualiser le fichier
https://fromsmash.com/hlXiss6UPf-ct


Cordialement
Claudius723

Hors ligne

#3 Le 10/11/2024, à 10:57

eric63

Re : Filtre suivant choix dans liste déroulante

Salut
as tu essayer avec l’autofiltre (menu Données/Autofiltre) qui permet de retrouver n’importe quelle valeur des colonnes choisies et de trier par ordre croissant ou décroissant
La seule contrainte est de nommer la première ligne des colonnes qui sert de référence de recherche. Dans ton cas cellule D1 à nommer en «code»
ou utiliser une table dynamique (plus difficile à utiliser)
Copie-d-cran-20241110-111623.png

Dernière modification par eric63 (Le 10/11/2024, à 11:17)


Kubuntu 24.10  Wayland Plasma 6.1.5 KDE 6.6.0 Qt 6.6.2 et noyau 6.11.0-9  Asus B760+D4  i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR

Hors ligne

#4 Le 10/11/2024, à 15:15

claudius723

Re : Filtre suivant choix dans liste déroulante

Merci eric63, oui j'ai essayé Autofiltre et la table dynamique, les deux fonctionnent bien, mais je souhaiterai une solution avec le moins de manipulations possible, c'est pour cela que je pense à  une macro, un clic sur un choix dans la liste déroulante et le résultat s'affiche !


Cordialement
Claudius723

Hors ligne

#5 Le 10/11/2024, à 15:39

eric63

Re : Filtre suivant choix dans liste déroulante

je pense qu’il te faudra poser ta question sur https://forum.openoffice.org/fr/forum/index.php et donner la version de libreoffice et de ton système et une copie de ton fichier . Ils sont assez pointilleux là dessus cool
mais il y a des gens très compétents qui ne manqueront pas de te fournir une réponse rapidement. J’ai toujours pu trouver une réponse précise et efficace à mes questions de macros chez eux.

Dernière modification par eric63 (Le 10/11/2024, à 15:42)


Kubuntu 24.10  Wayland Plasma 6.1.5 KDE 6.6.0 Qt 6.6.2 et noyau 6.11.0-9  Asus B760+D4  i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR

Hors ligne

#6 Le 10/11/2024, à 17:42

Rafbor

Re : Filtre suivant choix dans liste déroulante

Bonjour, @eric a raison, on trouve toutes les réponses sur le forum OpenOffice. J'ai regardé et j'ai trouvé un exemple qui répond à ton besoin, c'est ici.
Je l'ai adapté à ton fichier, directement dans le 1er onglet, tu sélectionnes le statut dans la liste déroulante au dessus du tableau et tu as un bouton pour appliquer le filtre et un autre pour l'annuler.
Lis bien les explications dans le sujet cité, notamment pour créer la liste déroulante. Attention la liste déroulante doit bien se trouver juste en dessous d'une cellule qui porte le même nom que l'entête de colonne à filtrer (ici "Statut").
Pour récupérer le fichier: lien

Dernière modification par Rafbor (Le 10/11/2024, à 17:45)


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#7 Le 10/11/2024, à 18:13

claudius723

Re : Filtre suivant choix dans liste déroulante

Bonjour Rafbor, merci pour ton intervention, j'ai testé le fichier cité et effectivement cela correspond exactement à ce que je souhaite, par contre pour récupérer ton adaptation, c'est compliqué (créer un compte), tu ne peux pas me l'envoyer avec "smash" plus facile à télécharger?


Cordialement
Claudius723

Hors ligne

#8 Le 10/11/2024, à 18:32

Rafbor

Re : Filtre suivant choix dans liste déroulante

Ok, je l'ai mis sur Smash. Bizarre l'autre site ne m'a pas demandé de créer un compte pour déposer le fichier.
Fichier


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#9 Le 10/11/2024, à 18:50

claudius723

Re : Filtre suivant choix dans liste déroulante

Bien téléchargé, merci, j'adapte le fichier et te tiens au courant.


Cordialement
Claudius723

Hors ligne

#10 Le 10/11/2024, à 18:52

eric63

Re : Filtre suivant choix dans liste déroulante

Heu c’est identique aux tableaux dynamiques Pourquoi s’embêter avec une macro ?
Copie-d-cran-20241110-184934.png


Kubuntu 24.10  Wayland Plasma 6.1.5 KDE 6.6.0 Qt 6.6.2 et noyau 6.11.0-9  Asus B760+D4  i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR

Hors ligne

#11 Le 10/11/2024, à 19:21

Rafbor

Re : Filtre suivant choix dans liste déroulante

@eric: c'est vrai que c'est similaire. Claudius a donc 2 solutions possibles.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#12 Le 10/11/2024, à 20:48

claudius723

Re : Filtre suivant choix dans liste déroulante

Rafbor, dans la macro "AppliquerFiltre", je ne saisie pas bien à quoi correspond 'la cellule d'arrivée de la copie' "G1", peux tu m'expliquer ?


Cordialement
Claudius723

Hors ligne

#13 Le 11/11/2024, à 08:49

Rafbor

Re : Filtre suivant choix dans liste déroulante

claudius723 a écrit :

Rafbor, dans la macro "AppliquerFiltre", je ne saisie pas bien à quoi correspond 'la cellule d'arrivée de la copie' "G1", peux tu m'expliquer ?

Je m'étais contenté de recopier l'exemple sans chercher à comprendre cette ligne, et en cherchant un peu j'ai compris qu'on peut demander à ce que le résultat du filtre soit écrit à un autre endroit.
Donc si tu veux garder le fonctionnement actuel,  tu peux supprimer les 2 lignes

maCellule = thisComponent.Sheets(0).getCellRangeByName("G1")       'cellule d'arrivée de la copie 
optFiltre.setPropertyValue("OutputPosition", maCellule.CellAddress) 

Si tu veux écrire le résultat ailleurs, remplace Sheet(0) et G1 par ce que tu veux (Sheet(0) c'est le 1er onglet, Sheet(1) le deuxième,..)
et tu mets à True la propriété CopyOutputData dans cette ligne

optFiltre.setPropertyValue("CopyOutputData", True)

Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#14 Le 12/11/2024, à 05:14

claudius723

Re : Filtre suivant choix dans liste déroulante

Bonjour, Rafbor, merci, cela devrait mieux fonctionner, je vais testé !!


Cordialement
Claudius723

Hors ligne

#15 Le 14/11/2024, à 12:12

claudius723

Re : Filtre suivant choix dans liste déroulante

Bonjour Rafbor, j'ai installé la nouvelle version de code et cela ne marche pas , j'ai le message
   "Erreur d’exécution BASIC '91'
    Variable d’objet non définie


Cordialement
Claudius723

Hors ligne

#16 Le 14/11/2024, à 16:21

Rafbor

Re : Filtre suivant choix dans liste déroulante

ça doit être lié à ce que j'ai indiqué au message #6

Attention la liste déroulante doit bien se trouver juste en dessous d'une cellule qui porte le même nom que l'entête de colonne à filtrer (ici "Statut").

mais sans le fichier je peux rien dire de plus


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#17 Le 14/11/2024, à 18:13

claudius723

Re : Filtre suivant choix dans liste déroulante

https://fromsmash.com/Liste-par-statut

Sub AppliquerFiltre
	Dim mesCriteres as Object 
	Dim maPlage as Object 
	Dim optFiltre as Object 
	Dim maFeuille as Object 
	Dim maCellule as Object 
  maPlage = ThisComponent.Sheets(0).getCellRangeByName("A4:d150")      'plage à filtrer 
   mesCriteres  = ThisComponent.Sheets(0).getCellRangeByName("D1:D2")      'plage de critères de filtre 
   optFiltre = mesCriteres.createFilterDescriptorByObject(maPlage) 
   optFiltre.setPropertyValue("ContainsHeader", TRUE)      ' les plages contiennent les entêtes de colonnes 
   optFiltre.setPropertyValue("UseRegularExpressions", TRUE)       ' permet d'utiliser .* pour remplacer une partie de mot 
   optFiltre.setPropertyValue("CopyOutputData", false) 
  maPlage.filter(optFiltre) 
End Sub

Sub SupprimerFiltre
	dim document   as Object
	dim dispatcher as Object

	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$A$4"

	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

	dispatcher.executeDispatch(document, ".uno:DataFilterRemoveFilter", "", 0, Array())

	dim args3(0) as new com.sun.star.beans.PropertyValue
	args3(0).Name = "ToPoint"
	args3(0).Value = "$A$4"

	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
	' on vide le choix en D2
	ThisComponent.Sheets(0).getCellRangeByName("D4").Value = ""
End Sub

Cordialement
Claudius723

Hors ligne

#18 Le 14/11/2024, à 19:45

Rafbor

Re : Filtre suivant choix dans liste déroulante

C'est pas le bon fichier que tu as mis, il n'y a que les anciennes macros en zBasic.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#19 Le 14/11/2024, à 21:08

claudius723

Re : Filtre suivant choix dans liste déroulante


Cordialement
Claudius723

Hors ligne

#20 Le 15/11/2024, à 09:25

Rafbor

Re : Filtre suivant choix dans liste déroulante

Je vois une erreur: dans la dernière ligne de code, il faut mettre "D2" au lieu de "D4" (en plus c'est bien écrit dans le commentaire qu'on veut vider la cellule D2)
Car D4 efface l'entête de colonne et la macro ne marche plus.
Remet bien "Statut" dans l'entête de colonne D.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#21 Le 16/11/2024, à 17:21

claudius723

Re : Filtre suivant choix dans liste déroulante

Bonjour Rafbor, cela ne marche pas chez moi, mais ce n'est pas grave j'ai un autre souci à régler pour ma configuration système. J'ouvre un nouveau post
A bientôt et merci


Cordialement
Claudius723

Hors ligne