[Résolu] [Calc] Filtre standard avec 1 critere

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 !
BadWoo
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2018 15:07

[Résolu] [Calc] Filtre standard avec 1 critere

Message par BadWoo »

Salut tout le monde,
J'essaie de lancer automatiquement un filtre standard avec le nombre 1 en condition.
Pour cela j'ai éplucher un certains nombre de sujets qui m'ont permis de construire un code.
Mais quand j'exécute le code, il me filtre toute mes valeurs. Je dois avoir mal géré mes critères

Je sens que j'y suis presque :fou:

J'espérais qu'un de vous comprendrait l'erreur.

ma feuille s'articule de la sorte :
[vide]
Résultats
[vide]
Résultats................
[vide]
boisson matériel quantité catégorie trier résultats
vin rouge materiel1 1 catégorie1 1
vin rouge materiel2 0 catégorie2 non_concerné
vin rouge materiel1 1 catégorie1 2
vin rouge materiel4 2 catégorie4 1
vin rouge materiel5 3 catégorie5 1
vin rouge materiel6 0 catégorie6 non_concerné

le code :

Code : Tout sélectionner

REM  *****  BASIC  *****

Sub filtre_standard

Dim maPlage as Object
Dim optFiltre as Object
Dim monClasseur as Object
Dim maFeuille as Object
Dim maCellule as Object
Dim mesCriteres (0) As New com.sun.star.sheet.TableFilterField  

monClasseur = ThisComponent
maFeuille = monClasseur.Sheets.getByName("Resultats")
maCellule  = ThisComponent.Sheets(1).getCellRangeByName("E6:E12")   
maPlage = ThisComponent.Sheets(0).getCellRangeByName("A6:E12")         

optFiltre = maPlage.createFilterDescriptorByObject(maPlage)

optFiltre.setPropertyValue("ContainsHeader",TRUE)      
optFiltre.setPropertyValue("UseRegularExpressions",TRUE)       
optFiltre.setPropertyValue("CopyOutputData",FALSE)
optFiltre.setPropertyValue("IsNumeric", TRUE)
   
mesCriteres(0).Field =1
mesCriteres(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL

mesCriteres(0).NumericValue =1
 optFiltre.setFilterFields(MesCriteres())

maPlage.filter(optFiltre)

end sub
.

Peu être est-ce la ligne :

Code : Tout sélectionner

mesCriteres(0).NumericValue =1
Enfin je sais pas

Merci :)
Bonne soirée

BadWoo
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par BadWoo le 15 mars 2018 09:19, modifié 1 fois.
Libreoffice v: 5.2.7.2
Linux Debian 9
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Filtre standard avec 1 critere

Message par Hubert Lambert »

Bonjour,

Voici un extrait du code, avec les corrections :

Code : Tout sélectionner

[...]
optFiltre = maPlage.createFilterDescriptor(True)  'MODIF
optFiltre.setPropertyValue("ContainsHeader", True)      
optFiltre.setPropertyValue("UseRegularExpressions", False) 'MODIF
optFiltre.setPropertyValue("CopyOutputData", False)
'optFiltre.setPropertyValue("IsNumeric", TRUE) 'MODIF
  
mesCriteres(0).Field = 4   'MODIF
mesCriteres(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
mesCriteres(0).IsNumeric = True  'MODIF
mesCriteres(0).NumericValue = 1  'MODIF
[...]
La partie critique est dans le choix de la méthode "createFilterDescriptor" à la place de "createFilterDescriptorByObject" (celle-ci réservée aux filtres spéciaux), dans la sélection de la colonne de référence ("Field = 4") et dans la propriété "UseRegularExpressions", qui doit bien sûr être false en l'occurrence :wink: .

Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
BadWoo
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2018 15:07

Re: [Calc] Filtre standard avec 1 critere

Message par BadWoo »

Salut,

Super merci :)
Je suis un pro maintenant :wink:
Libreoffice v: 5.2.7.2
Linux Debian 9