Le 23/07/2010 09:16, Samuel Mounier (Liste CGO) a écrit :
Yves LOMBARDOT a écrit :
Bonjour,
Utilisateur pour mon travail d'une macro de filtre spécial, récupérée il
y a quelques temps déjà sur un forum.
Tout fonctionnait à merveilles sous Ooo 2.4, mais au passage de nos
services à la version 3.2 (oui on va lentement) je déplore un souci très
gênant pour nous. Bug qui ne concerne par ailleurs pas que la macro mais
également l'utilisation du filtre spécial lui même avec les commandes
idoines de calc.
Le problème :
dès qu'une cellule contient un retour à la ligne par Ctrl+entrée, si
l'un des termes recherchés concerne cette colonne, la ligne contenant la
cellule ne sera pas renvoyée en résultat.
Pour l'instant on pallie au problème avec le filtre standard mais je
suis preneur de toute solution temporaire et d'adresse ou faire remonter
ce bug.
En vous remerciant de votre écoute
Cordialement
Bonjour Yves,
As tu vérifié si l'option utiliser expression régulière était choisie ?
Je pense qu'une cellule contenant un caractère de retour à ligne doit
avoir un critère de filtre un peu particulier (Essaye de l'exprimer
avec une expression régulière à l'aide de l'aide et ça devrait passer).
Samuel Mounier
Bonjour,
Merci de cette première réponse, je cherche toujours mais si cela peut
vous aider à comprendre d'où vient mon problème, voici la macro qui
fonctionnait très bien sous Ooo 2.4. Je m'empresse de rappeler qu'elle
m'a été gracieusement donnée et que, si je peux y modifier les
différentes zones, j'aurais été bien incapable de la produire. Et sans
la macro mais avec le filtre "Données/filtre/filtre spécial" je ne
trouve pas l'option "utiliser expression régulière". Je peux adresser
une version basique du fichier si besoin
Milles excuses pour mon inculture
Yves LOMBARDOT
----------------------------
Option Explicit
Sub monFiltreSpecial()
Dim oPlage as Object
Dim optFiltre as Object
Dim oFeuille as Object
Dim oCellule as Object
Dim oCriteres as Object
oFeuille = thisComponent.Sheets.getByName("Extraction")
thisComponent.currentController.activeSheet = oFeuille
Effacement()
oCellule = thisComponent.Sheets(2).getCellRangeByName("A4")
oPlage = thisComponent.Sheets(0).getCellRangeByName("A2:i5001")
oCriteres = thisComponent.Sheets(1).getCellRangeByName("A11:i250")
optFiltre = oCriteres.createFilterDescriptorByObject(oPlage)
optFiltre.setPropertyValue("ContainsHeader",TRUE)
optFiltre.setPropertyValue("UseRegularExpressions",TRUE)
optFiltre.setPropertyValue("CopyOutputData",TRUE)
optFiltre.setPropertyValue("OutputPosition",oCellule.CellAddress)
oPlage.filter(optFiltre)
End Sub
Sub Effacement()
Dim oDocument as object
Dim oDispatcher as object
oDocument = thisComponent.CurrentController.Frame
thisComponent.currentController.activeSheet = thisComponent.Sheets(2)
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$5:$I$5006"
oDispatcher.executeDispatch(oDocument, ".uno:GoToCell", "", 0, args1())
oDispatcher.executeDispatch(oDocument, ".uno:ClearContents", "", 0, Array())
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = false
oDispatcher.executeDispatch(oDocument, ".uno:GoToStart", "", 0, args3())
End Sub
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org