[Résolu] [Calc]Rechercher données OU
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
[Résolu] [Calc]Rechercher données OU
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: Dans le fichier joint, le dialogue2 represente ce que je souhaiterais faire: Pourriez-vous m'aider svp?
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: Dans le fichier joint, le dialogue2 represente ce que je souhaiterais faire: Pourriez-vous m'aider svp?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par bebertdu01 le 23 oct. 2021 18:23, modifié 1 fois.
libreoffice 7.5.8, windows 10 x64
-
- IdOOle de la suite
- Messages : 25182
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc]Rechercher données OU
Salut,
Fais une recherche sur les fonctions CalcSQL
Fais une recherche sur les fonctions CalcSQL
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Calc]Rechercher données OU
Bonjour,
Ton filtre devrait ressembler à ça :
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 :
@+
Ton filtre devrait ressembler à ça :
Code : Tout sélectionner
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
Code : Tout sélectionner
MotCle1 = Dlg.getControl("TextField2").Text
ou
Marque2 = Dlg.getControl("ListBox2").selecteditem
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
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. J'obtient le résultat suivant: Normalement une seul ligne devrait etre affiché...
Voici le fichier:
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. J'obtient le résultat suivant: Normalement une seul ligne devrait etre affiché...
Voici le fichier:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 7.5.8, windows 10 x64
-
- InconditiOOnnel
- Messages : 951
- Inscription : 19 août 2018 05:20
Re: [Calc]Rechercher données OU
Bonjour,
Regarde ton filtre standard. Il y a des doublons : La macro ne fera rien de mieux.
Regarde ton filtre standard. Il y a des doublons : La macro ne fera rien de mieux.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.15 sous Windows 11
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
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:
J'obtients des résutats avec Fiat....
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
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 7.5.8, windows 10 x64
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Calc]Rechercher données OU
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:
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
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 x = 1 To 3
If x = 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 x = 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.CellFlags; efface les données de type (value + datetime + string + formula)
end sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
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 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
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 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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 7.5.8, windows 10 x64
-
- InconditiOOnnel
- Messages : 951
- Inscription : 19 août 2018 05:20
Re: [Calc]Rechercher données OU
Il faut tester si le champ est vide et ignorer la clause OR dans ce cas.bebertdu01 a écrit :Le filtre ne se fait plus correctement nottament quand le mot cle 2 est laissé vide.
Open Office 4.1.15 sous Windows 11
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Calc]Rechercher données OU
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 :bebertdu01 a écrit :Le filtre en fonction de la numerotaion ne se fait jamais.
Code : Tout sélectionner
NumeroDebut = Clng(Dlg.getControl("ListBox2").selecteditem)
NumeroFin = Clng(Dlg.getControl("ListBox3").selecteditem)
Code : Tout sélectionner
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
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
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
Je reviens vers vous sous bref délai.
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
Je reviens vers vous sous bref délai.
libreoffice 7.5.8, windows 10 x64
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
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?
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.5.8, windows 10 x64
-
- InconditiOOnnel
- Messages : 951
- Inscription : 19 août 2018 05:20
Re: [Calc]Rechercher données OU
Re,
As-tu fait le test avec le Filtre standard pour voir si cela fonctionne ?
Voir ma précédente réponse.bebertdu01 a écrit :Désormais, si par exemple j'ecris "port" pour chercher "porte" le filtrage ne fonctionne plus.
As-tu fait le test avec le Filtre standard pour voir si cela fonctionne ?
Open Office 4.1.15 sous Windows 11
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Calc]Rechercher données OU
Bonjour,
Tu devrais pouvoir t'en sortir avec les expressions régulières :
et ajouter dans les propriété du filtre :
@+
Tu devrais pouvoir t'en sortir avec les expressions régulières :
Code : Tout sélectionner
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
UseRegularExpressions = True
Code : Tout sélectionner
With monFiltre
.UseRegularExpressions = True
.FilterFields = champsFiltre()
.CopyOutputData = True
.ContainsHeader = True
.Orientation = com.sun.star.table.TableOrientation.COLUMNS
.OutputPosition = pointResu.CellAddress
.SkipDuplicates = True
End With
-
- Membre OOrganisé
- Messages : 56
- Inscription : 09 janv. 2021 18:44
Re: [Calc]Rechercher données OU
Merci beaucoup Zeguedon. Je suis en train de déployer votre code. Merci beaucoup pour votre temps.
libreoffice 7.5.8, windows 10 x64