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

Reply via email to