#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)
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
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
En 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
En 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
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
En 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
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
En 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
En 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
En 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
En 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