[Résolu] [Calc]Rechercher données OU

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 !

[Résolu] [Calc]Rechercher données OU

Messagepar bebertdu01 » 02 Oct 2021 17:02

Bonjour,

J'ai un classeur avec un code qui me permets d'effectuer une recherche d'information en fonction de plusieurs critères (dialogue 1 dans fichier test).
Ce fichier est contitué d'une feuille résultat et d'une feuille listing. Un bouton sur la feuille resultat lance un dialogue pour inserer tous les critères pour effectuer la recherche.
Ce fichier fonctionne. Cependant par souci d'efficacité, j' aimerais aussi ajouter des citères mais avec OR (ou)
Le problème c'est que le code ne fonctionne que avec AND et je n'ai pas le niveau pour le parametrer comme je le souhaite.
Ci-joint le fichier test:
RECHERCHER.ods
(20.06 Kio) Téléchargé 27 fois


Dans le fichier joint, le dialogue2 represente ce que je souhaiterais faire:
Untitled.png


Pourriez-vous m'aider svp?
Dernière édition par bebertdu01 le 23 Oct 2021 19:23, édité 1 fois.
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar Dude » 02 Oct 2021 19:24

Salut,

Fais une recherche sur les fonctions CalcSQL
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22827
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc]Rechercher données OU

Messagepar zeguedon » 03 Oct 2021 00:13

Bonjour,

Ton filtre devrait ressembler à ça :
Code : Tout sélectionner   AgrandirRéduire
Dim champsFiltre(5) As New com.sun.star.sheet.TableFilterField
With champsFiltre
(0)
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle1
End With
With champsFiltre
(1)
.
Connection = com.sun.star.sheet.FilterConnection.OR
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle2
End With
With champsFiltre
(2)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque1
End With
With champsFiltre
(3)
.
Connection = com.sun.star.sheet.FilterConnection.OR
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque2
End With
With champsFiltre
(4)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre
(5)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With


Ta boite de dialogue n'étant pas encore construite dans ton fichier joint, il faudra affecter aux variables : MotCle1, MotCle2, Marque1, Marque2, NumeroDebut, NumeroFin les champs correspondants de ta future boite de dialogue. Par exemple :
Code : Tout sélectionner   AgrandirRéduire
MotCle1 = Dlg.getControl("TextField2").Text
ou
Marque2 
= Dlg.getControl("ListBox2").selecteditem

@+
Comment baliser [Résolu] ?
AOO 4.1.10
LibreOffice 7.1.5.2
Sous Linux & Windows 10
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2850
Inscrit le : 02 Juil 2014 18:25

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 03 Oct 2021 10:26

Bonjour,

Encore merci de votre temps.
Jai apporté les modifications dans le fichier joint en fonction des indications que vous m'avez fournis.
Par compte, le resultat du filtrage n'est pas vraiment celui que je souhaite.

Ex: pour un mot clé seulement "porte" avec la marque "peugeot" pour une plage de numérotation comprise entre 0 et 99999.
Untitled.png


J'obtient le résultat suivant:
Untitled2.png


Normalement une seul ligne devrait etre affiché...

Voici le fichier:
RECHERCHER - VERSION 1.ods
(18.43 Kio) Téléchargé 30 fois
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar Dolev » 03 Oct 2021 14:23

Bonjour,

Regarde ton filtre standard. Il y a des doublons :
Capture.PNG


La macro ne fera rien de mieux.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 403
Inscrit le : 19 Août 2018 06:20

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 03 Oct 2021 16:25

Bonjour,

Je ne comprends pas bien, j'ai beau modifier les paramètres And et OR mais à chaque fois les résultats ne concordent pas.
Meme si je mets tous les parametres sur AND et le je laisse OR seulement pour mot clé 1 et mot cle 2 cela fonctionne pas non plus.
Ex avec:
Code : Tout sélectionner   AgrandirRéduire
With champsFiltre(0)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle1
End With
With champsFiltre(1)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle2
End With
With champsFiltre(2)
.Connection = com.sun.star.sheet.FilterConnection.AND
.Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.EQUAL
.IsNumeric = False
.StringValue = Marque1
End With
With champsFiltre(3)
.Connection = com.sun.star.sheet.FilterConnection.AND
.Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre(4)
.Connection = com.sun.star.sheet.FilterConnection.AND
.Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With


Sans titre.png


J'obtients des résutats avec Fiat....
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar zeguedon » 03 Oct 2021 17:13

Bonjour,

En fait il faut filtrer 3 fois, une fois la feuille LISTING sur les deux premiers critères, ensuite le résultat obtenu avec les deux critères suivants et enfin les deux derniers critères:
Code : Tout sélectionner   AgrandirRéduire
Option Explicit

sub Rechercher
call nettoyage
call filtrerDonnees
()
end sub

Sub filtrerDonnees
()
Dim x As Long
Dim Dlg 
As Object
Dim oDoc 
As Object
Dim lesFeuilles 
As Object
Dim maFeuille1 
As Object
Dim maFeuille2 
As Object
Dim maZone 
As Object
Dim feuilleResu 
As Object
Dim pointResu 
As Object
Dim monFiltre 
As Object
Dim MotCle1 
As String
Dim MotCle2 
As String
Dim Marque1 
As String
Dim Marque2 
As String
Dim NumeroDebut 
As Long
Dim NumeroFin 
As Long
Dim champsFiltre1
(1) As New com.sun.star.sheet.TableFilterField
Dim champsFiltre2
(1) As New com.sun.star.sheet.TableFilterField
Dim champsFiltre3
(1) As New com.sun.star.sheet.TableFilterField
DialogLibraries
.LoadLibrary("Standard")
Dlg CreateUnoDialog(DialogLibraries.Standard.Dialog2)
Dlg.Execute() 

MotCle1 Dlg.getControl("TextField2").Text
Motcle2 
Dlg.getControl("TextField1").Text    
Marque1 
Dlg.getControl("ListBox1").selecteditem
Marque2 
Dlg.getControl("ListBox4").selecteditem
NumeroDebut 
Dlg.getControl("ListBox2").selecteditem
NumeroFin 
Dlg.getControl("ListBox3").selecteditem
    
oDoc 
ThisComponent
lesFeuilles 
oDoc.Sheets
maFeuille1 
lesFeuilles.getByName("LISTING")
maFeuille2 lesFeuilles.getByName("RESULTAT")
feuilleResu lesFeuilles.getByName("RESULTAT")
pointResu feuilleResu.getCellRangeByName("A1")

With champsFiltre1(0)
.
Field 1
.Operator com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric False
.StringValue MotCle1
End With
With champsFiltre1
(1)
.
Connection com.sun.star.sheet.FilterConnection.OR
.
Field 1
.Operator com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric False
.StringValue MotCle2
End With

With champsFiltre2
(0)
.
Field 2
.Operator com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric False
.StringValue Marque1
End With
With champsFiltre2
(1)
.
Connection com.sun.star.sheet.FilterConnection.OR
.
Field 2
.Operator com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric False
.StringValue Marque2
End With

With champsFiltre3
(0)
.
Field 0
.Operator com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric True
.NumericValue NumeroDebut
End With
With champsFiltre3
(1)
.
Connection com.sun.star.sheet.FilterConnection.AND
.
Field 0
.Operator com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric True
.NumericValue NumeroFin
End With

For 1 To 3
    
If 1 Then
        maZone 
maFeuille1.getCellRangeByName("A1:D100000")
        
monFiltre maZone.createFilterDescriptor(True)
        
With monFiltre    
        
.FilterFields champsFiltre1()
        .
CopyOutputData True
        
.ContainsHeader True
        
.Orientation com.sun.star.table.TableOrientation.COLUMNS
        
.OutputPosition pointResu.CellAddress
        End With
        maZone
.filter(monFiltre)
    ElseIf 
2 Then
        maZone 
maFeuille2.getCellRangeByName("A1:D100000")
        
monFiltre maZone.createFilterDescriptor(True)
        
With monFiltre    
        
.FilterFields champsFiltre2()
        .
CopyOutputData True
        
.ContainsHeader True
        
.Orientation com.sun.star.table.TableOrientation.COLUMNS
        
.OutputPosition pointResu.CellAddress
        End With
        maZone
.filter(monFiltre)
    else    
        
maZone maFeuille2.getCellRangeByName("A1:D100000")
        
monFiltre maZone.createFilterDescriptor(True)
        
With monFiltre    
        
.FilterFields champsFiltre3()
        .
CopyOutputData True
        
.ContainsHeader True
        
.Orientation com.sun.star.table.TableOrientation.COLUMNS
        
.OutputPosition pointResu.CellAddress
        End With
        maZone
.filter(monFiltre)
    
end if
next
End Sub


'-------------------------------------
sub nettoyage
Dim oSheet As Object, oRange As Object, nRep As Integer
oSheet = thisComponent.sheets.getByName("RESULTAT")
oRange = oSheet.getCellRangeByName("a2:d10000")
oRange.clearContents(1+2+4+16) '
constantes com.sun.star.sheet.CellFlagsefface les données de type (value datetime string formula
end sub
Pièces jointes
Z1_RECHERCHER - VERSION 1.ods
(14.94 Kio) Téléchargé 24 fois
Comment baliser [Résolu] ?
AOO 4.1.10
LibreOffice 7.1.5.2
Sous Linux & Windows 10
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2850
Inscrit le : 02 Juil 2014 18:25

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 03 Oct 2021 19:20

Bonsoir,

Encore merci pour le temps accordé. Le résultat s'approche de plus en plus.
J'ai testé votre fichier et je constate encore quelques petits problèmes:

1- Le filtre en fonction de la numerotaion ne se fait jamais. Nottament avec l'exemple ci-dessous. Le résultat affiche en permanence toutes les valeurs de 0 à 99999
Sans titre.png


2- Le filtre ne se fait plus correctement nottament quand le mot cle 2 est laissé vide. Comme dans l'exemple ci-dessous. Il n'y a plus de filtre constructeur, ils sont tous affichés
Sans titre.png
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar Dolev » 03 Oct 2021 20:30

bebertdu01 a écrit:Le filtre ne se fait plus correctement nottament quand le mot cle 2 est laissé vide.

Il faut tester si le champ est vide et ignorer la clause OR dans ce cas.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 403
Inscrit le : 19 Août 2018 06:20

Re: [Calc]Rechercher données OU

Messagepar zeguedon » 04 Oct 2021 00:49

bebertdu01 a écrit:Le filtre en fonction de la numerotaion ne se fait jamais.

Effectivement car le contenu de la zone de liste (ListBox) de ta boite de dialogue est au format texte alors que celui des cellules de ton tableau est au format numérique. Il suffisait juste de convertir la valeur récupérée dans la zone de liste avec la fonction Clng :
Code : Tout sélectionner   AgrandirRéduire
NumeroDebut = Clng(Dlg.getControl("ListBox2").selecteditem)
NumeroFin = Clng(Dlg.getControl("ListBox3").selecteditem)

Pour le reste, je crois que le bon schéma/raisonnement pour le filtrage et le suivant :
Code : Tout sélectionner   AgrandirRéduire
MotClé1 ET Marque1 ET >=NumeroDebut ET <=NumeroFin
OU
MotClé1 ET Marque2 ET >=NumeroDebut ET <=NumeroFin
OU
MotClé2 ET Marque1 ET >=NumeroDebut ET <=NumeroFin
OU
MotClé2 ET Marque2 ET >=NumeroDebut ET <=NumeroFin

Code : Tout sélectionner   AgrandirRéduire
Option Explicit

sub Rechercher
call nettoyage
call filtrerDonnees
()
end sub

Sub filtrerDonnees
()
Dim x As Long
Dim Dlg As Object
Dim oDoc As Object
Dim lesFeuilles As Object
Dim maFeuille1 As Object
Dim maFeuille2 As Object
Dim maZone As Object
Dim feuilleResu As Object
Dim pointResu As Object
Dim monFiltre As Object
Dim MotCle1 As String
Dim MotCle2 As String
Dim Marque1 As String
Dim Marque2 As String
Dim NumeroDebut As Long
Dim NumeroFin As Long
Dim champsFiltre
(15) As New com.sun.star.sheet.TableFilterField
DialogLibraries
.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog2)
Dlg.Execute() 

MotCle1 
= Dlg.getControl("TextField2").Text
Motcle2 
= Dlg.getControl("TextField1").Text    
Marque1 
= Dlg.getControl("ListBox1").selecteditem
Marque2 
= Dlg.getControl("ListBox4").selecteditem
NumeroDebut 
= Clng(Dlg.getControl("ListBox2").selecteditem)
NumeroFin = Clng(Dlg.getControl("ListBox3").selecteditem)   
oDoc 
= ThisComponent
lesFeuilles 
= oDoc.Sheets
maFeuille1 
= lesFeuilles.getByName("LISTING")
maFeuille2 = lesFeuilles.getByName("RESULTAT")
feuilleResu = lesFeuilles.getByName("RESULTAT")
pointResu = feuilleResu.getCellRangeByName("A1")

With champsFiltre(0)
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle1
End With
With champsFiltre
(1)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque1
End With
With champsFiltre
(2)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre
(3)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With
With champsFiltre
(4)
.
Connection = com.sun.star.sheet.FilterConnection.OR
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle1
End With
With champsFiltre
(5)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque2
End With
With champsFiltre
(6)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre
(7)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With
With champsFiltre
(8)
.
Connection = com.sun.star.sheet.FilterConnection.OR
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle2
End With
With champsFiltre
(9)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque1
End With
With champsFiltre
(10)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre
(11)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With
With champsFiltre
(12)
.
Connection = com.sun.star.sheet.FilterConnection.OR
.
Field = 1
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = MotCle2
End With
With champsFiltre
(13)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 2
.Operator = com.sun.star.sheet.FilterOperator2.CONTAINS
.IsNumeric = False
.StringValue = Marque2
End With
With champsFiltre
(14)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.GREATER_EQUAL
.IsNumeric = True
.NumericValue = NumeroDebut
End With
With champsFiltre
(15)
.
Connection = com.sun.star.sheet.FilterConnection.AND
.
Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.LESS_EQUAL
.IsNumeric = True
.NumericValue = NumeroFin
End With
maZone 
= maFeuille1.getCellRangeByName("A1:D10000")
monFiltre = maZone.createFilterDescriptor(True)
With monFiltre    
.FilterFields = champsFiltre()
.
CopyOutputData = True
.ContainsHeader = True
.Orientation = com.sun.star.table.TableOrientation.COLUMNS
.OutputPosition = pointResu.CellAddress
.SkipDuplicates = True
End With
maZone
.filter(monFiltre)
End Sub

et le fichier pour tester :
Pièces jointes
Z2_RECHERCHER - VERSION 1.ods
(15.68 Kio) Téléchargé 44 fois
Comment baliser [Résolu] ?
AOO 4.1.10
LibreOffice 7.1.5.2
Sous Linux & Windows 10
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2850
Inscrit le : 02 Juil 2014 18:25

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 04 Oct 2021 11:41

Fantastique !

Le fichier test fonctionne à merveilles!
Je vais le tester à grande échelle ce week-end.
Votre travail va contribuer à me faciliter la tache au quotidien!
Merci beaucoup :bravo:
Je reviens vers vous sous bref délai.
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 09 Oct 2021 13:12

Bonjour,

Comme convenu,
J'ai déployé à grande échelle le code de Zeguedon.
Cependant, je m'apercois d'un réel problème pour mon utilisation, le filtre du mot clé se fait de manière très strict.
Je m'explique:
Dans le fichier d'origine, le filtrage s'effectuait malgré que le mot clé soit contenu dans une phrase entière. Je pouvait écrire une partie du mot, le filtrage s'effectuait.
Désormais, si par exemple j'ecris "port" pour chercher "porte" le filtrage ne fonctionne plus.
ou
"porte" alors dans le fichier listing colonne description c'est "porte arrière gauche bleu", idem le filtrage ne se fait plus.
Du coup, cela limite dragstiquement mon utilisation réel et le rend inutile...

Je tiens à m'excuser pour vous avoir fait perdre votre temps mais j'ai voulu simplifier le fichier exemple au maximum pour qu'il soit claire pour vous, mais je pense qu'au final que cela vous a induit en erreur. En effet, vue que cela fonctionnait dans mon fichier d'origine, j'ai suposé par erreur que cela allait encore fonctionner.

Je sollicite du coup encore votre aide. Pouvez-vous m'aider svp?
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44

Re: [Calc]Rechercher données OU

Messagepar Dolev » 09 Oct 2021 14:37

Re,

bebertdu01 a écrit:Désormais, si par exemple j'ecris "port" pour chercher "porte" le filtrage ne fonctionne plus.

Voir ma précédente réponse.
As-tu fait le test avec le Filtre standard pour voir si cela fonctionne ?
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 403
Inscrit le : 19 Août 2018 06:20

Re: [Calc]Rechercher données OU

Messagepar zeguedon » 10 Oct 2021 00:18

Bonjour,

Tu devrais pouvoir t'en sortir avec les expressions régulières :
Code : Tout sélectionner   AgrandirRéduire
MotCle1 = ".*" & Dlg.getControl("TextField2").Text & ".*"
Motcle2 = Dlg.getControl("TextField1").Text
If Motcle2 <> "" Then
   Motcle2 = ".*" & Motcle2 & ".*"
end if


et ajouter dans les propriété du filtre :
Code : Tout sélectionner   AgrandirRéduire
UseRegularExpressions = True


Code : Tout sélectionner   AgrandirRéduire
With monFiltre   
.UseRegularExpressions = True
.FilterFields = champsFiltre()
.CopyOutputData = True
.ContainsHeader = True
.Orientation = com.sun.star.table.TableOrientation.COLUMNS
.OutputPosition = pointResu.CellAddress
.SkipDuplicates = True
End With


@+
Comment baliser [Résolu] ?
AOO 4.1.10
LibreOffice 7.1.5.2
Sous Linux & Windows 10
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2850
Inscrit le : 02 Juil 2014 18:25

Re: [Calc]Rechercher données OU

Messagepar bebertdu01 » 23 Oct 2021 19:22

Merci beaucoup Zeguedon. Je suis en train de déployer votre code. Merci beaucoup pour votre temps.
libreoffice 7.1.6, windows 10 x64
bebertdu01
Membre lOOyal
Membre lOOyal
 
Message(s) : 29
Inscrit le : 09 Jan 2021 19:44


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)