[Résolu][Calc] Filtre de caractère joker dans un champ

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 !
Phane
Membre OOrganisé
Membre OOrganisé
Messages : 99
Inscription : 09 juin 2014 18:13
Localisation : Foret de brocéliande

[Résolu][Calc] Filtre de caractère joker dans un champ

Message par Phane »

Bonjour

Après quelques moins "d'abstinence" je me replonge dans les macros libreOffice et je crois bien avoir perdu quelques trucs en cours de route...

Je travaille actuellement sur les filtres et je cherche à isoler dans une liste volumineuse ( 53.000 lignes) les lignes qui comportent des caractères problématiques ( &,/,*)

Mon filtre fonctionne pour / et &

Code : Tout sélectionner

With champsFiltre(0)					'Parametre le 1er critère de filtre
	.Field = 0                  		        'Filtre la colonne A 
	.Operator = com.sun.star.sheet.FilterOperator.EQUAL
	.IsNumeric = false          		        'Utilise une chaîne et non un nombre.
	.StringValue = ".*/.*"				'Valeur a chercher n'importe ou dans le champ
End With
mais je n'arrive pas à chercher les * ... forcément. Je pense que ce que je recherche ( .StringValue = ".***." ) n'est pas bon, sans savoir par quoi le remplacer

Merci d'avance
Dernière modification par Phane le 06 févr. 2018 14:36, modifié 2 fois.
@ home, Libre Office Version: 6.3.3.2 et Xubuntu 18.04.3 LTS/ W7
@ pro fixe, Libre Office 4.3.7.2 et W7 ( Obligation de version )
@ pro portable , Libre Office 5.2.6.2 et W10 ( Obligation de version )
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12228
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Clac]recherche le caractère * dans un champs

Message par Bidouille »

Pour être aidé efficacement par les bénévoles et surtout leur faire gagner du temps, veuillez fournir les éléments suivants :
  1. insérer dans le corps du message le code de la macro exposant le problème
  2. joindre un document explicatif intégrant cette macro avec les données de départ (feuille1) et le résultat à obtenir (feuille2)
  3. fournir un mode pas-à-pas permettant de reproduire ce qui a été fait ou ce que vous cherchez à faire pour arriver au problème
  4. ajouter des copies écran (situation avant / après) si cela permet de mieux comprendre
Merci de publier ces informations à la suite.

Et avec autant de messages à votre compteur, corrigez aussi votre titre avant la claque.
Phane
Membre OOrganisé
Membre OOrganisé
Messages : 99
Inscription : 09 juin 2014 18:13
Localisation : Foret de brocéliande

Re: [Calc]recherche le caractère * dans un champs

Message par Phane »

@bidouille : OK j'ai honte ....

Voici le code complet pour ce filtre et un fichier exemple

Code : Tout sélectionner

option explicit

'===============================================================
Sub Filtre_PP_Caracteres
'===============================================================
'Récupère les lignes avec des caractères parasites
'---------------------------------------------------------------
Dim mafeuille as object
Dim monFiltre as object, pointresu as object, ZoneImport as object
Dim champsFiltre(2) as New com.sun.star.sheet.TableFilterField
Dim y as long
'---------------------------------------------------------------
Mafeuille =  Thiscomponent.sheets.getbyname("Test")				' Feuille source	
ZoneImport = Mafeuille.getCellRangeByposition(0,0,0,5)	 		'zone à filtrer
pointResu =  Mafeuille.Getcellbyposition(2,0)	

	'paramètres personnalisés du filtre 
	With champsFiltre(0)					'Parametre le 1er critère de filtre
		.Field = 0                  		'Filtre la colonne A 
		.Operator = com.sun.star.sheet.FilterOperator.EQUAL
		.IsNumeric = false          		'Utilise une chaîne et non un nombre.
		.StringValue = ".*/.*"				'Valeur a chercher n'importe ou dans le champ
   	End With
    
    With champsFiltre(1)					'Parametre le 1er critère de filtre
		.Connection = com.sun.star.sheet.FilterConnection.OR
		.Field = 0                  		'Filtre la colonne A 
		.Operator = com.sun.star.sheet.FilterOperator.EQUAL
		.IsNumeric = false          		'Utilise une chaîne et non un nombre.
		.StringValue = ".*&.*"		  			 'Valeur a chercher
   End With
    
    With champsFiltre(2)					'Parametre le 1er critère de filtre
    	.Connection = com.sun.star.sheet.FilterConnection.OR
		.Field = 0                  		'Filtre la colonne A 
		.Operator = com.sun.star.sheet.FilterOperator.EQUAL
		.IsNumeric = false          		'Utilise une chaîne et non un nombre.
		.StringValue = ".***."  				'Valeur a chercher
    End With
    	
	MonFiltre = ZoneImport.createFilterDescriptor(True)
		
	With MonFiltre
		.CopyOutputData = True		
		.ContainsHeader = true		
		.outputposition = pointResu.CellAddress
		.UseRegularExpressions = true
		.FilterFields = champsFiltre()
	End with
	
	ZoneImport.filter(MonFiltre)		'Appliquer le filtre
	
	
End sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
@ home, Libre Office Version: 6.3.3.2 et Xubuntu 18.04.3 LTS/ W7
@ pro fixe, Libre Office 4.3.7.2 et W7 ( Obligation de version )
@ pro portable , Libre Office 5.2.6.2 et W10 ( Obligation de version )
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]recherche le caractère * dans un champs

Message par Churay »

Bonjour,

Le caractère * est presque toujours un pb...
Je travaille actuellement sur les filtres et je cherche à isoler dans une liste volumineuse ( 53.000 lignes) les lignes qui comportent des caractères problématiques ( &,/,*)
S'il n'y a rien de confidentiel, je suis preneur du fichier pour tester à l'ancienne. Avec la liste des caractères à rechercher.
5 000 lignes donneraient déjà une idée.

Si c'est confidentiel, je suis toujours preneur, mais il t'appartient de le rendre anonyme.
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc]recherche le caractère * dans un champs

Message par Jeff »

Bonjour,

Fais un essai en remplaçant :

Code : Tout sélectionner

.StringValue = ".***."                  'Valeur a chercher
Par :

Code : Tout sélectionner

.StringValue = ".*\*.*"                  'Valeur a chercher
A +
Phane
Membre OOrganisé
Membre OOrganisé
Messages : 99
Inscription : 09 juin 2014 18:13
Localisation : Foret de brocéliande

Re: [Calc]recherche le caractère * dans un champs

Message par Phane »

Ohhh Jeff, comme j'aimerais prendre le temps de partager une petite mousse pour cette solution qui fonctionne avec mes données

@churay :Les données sont plutôt sensibles mais j'aurais faire l'effort de les rendre anonymes sans la solution de Jeff. Merci en tout cas de cette (tres) gentille proposition

Merci à tous
@ home, Libre Office Version: 6.3.3.2 et Xubuntu 18.04.3 LTS/ W7
@ pro fixe, Libre Office 4.3.7.2 et W7 ( Obligation de version )
@ pro portable , Libre Office 5.2.6.2 et W10 ( Obligation de version )
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Résolu][Calc]recherche le caractère * dans un champs

Message par Jeff »

La solution est dans l’aide F1 :) :
expr_reg.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Résolu][Calc]recherche le caractère * dans un champs

Message par Churay »

J'ai recopié ton exemple, jusqu'à la ligne 50 034 :
  • - jusqu'à 250 lignes, le filtre est instantané,
    - à 260 je n'ai pas la patience d'attendre... Je crains sérieusement pour 50 000 lignes...
Une simple macro de balayage, met
  • - 1 mn 15 s pour copier les chaînes en colonne C des 50 033 lignes à tester...
    - 2 mn à 2 mn 30 s pour changer la couleur de fond des cellules contenant les caractères recherchés sur les 50 033 lignes à tester...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...