Bonjour,
Je retransmets une question que j'ai posée en pleine période de vacances
et dont les rares tentatives de réponses, dont je remercie vivement les
auteurs, ne m'ont pas permis de solutionner le problème. En re-précisant
dès à présent que le bug ne concerne pas seulement la macro dont je vais
vous parer mais bien le filtre spécial de calc en lui même. Autant que
la solution je cherche à faire remonter le bug aux programmeurs.
--
J'utilise pour mon travail d'une macro de filtre spécial, récupérée il y
a quelques temps déjà sur un forum et dont je crois Mme Sophie Gautier,
est l'auteur. Ceci par
l'intermédiaire d'un camarade qui lui aussi naviguait sur ce forum.
Tout fonctionnait à merveilles sous Ooo jusqu'en version 2.4, mais au
passage de nos services à la version 3.2 (oui on va lentement) je
déplore un 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 (un peu
restrictif) mais je suis preneur de toute solution temporaire et
d'adresse ou faire remonter ce bug.
En vous remerciant de votre écoute
Cordialement
Je vous colle la macro ci-dessous mais, j'insiste, le filtre spécial lui
même connait les mêmes dysfonctionnements. (même en cochant "caractères
génériques")
--
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
--
Merci
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org