Bonjour
Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.
Email: - christian.rabiller@free.fr
Sujet: - macro calc
Question: - Bonjour,
J'avais inclus dans mon document openoffice la macro suivante qui ne fonctionne pas sous libreoffice.
Pouvez-vous m'indiquer les changements qui ont été opérés car aucune erreur n'apparait, mais le filtre n'est pas réalisé.
Merci de votre attention.
option explicit
sub PysFilter
Const PysNumFeuille = 0 'Numérotation commence à zéro => 1ère feuille
Const PysColDeb = 0 'Ibid.
Const PysColFin = 3
Const PysLigDeb = 0
Const PysLigFin = 5
dim PysFeuille as object, PysPlage as object, PysFiltre as object, PysDataRange as object, i as integer
dim PysChampFiltre(0) As New com.sun.star.sheet.TableFilterField
PysFeuille = thisComponent.Sheets.getByIndex(PysNumFeuille) 'Accès à la feuille dont le numéro est en constante
PysPlage = PysFeuille.getCellRangeByPosition(PysColDeb,PysLigDeb,PysColFin,PysLigFin) 'Accès à la plage concernée
'Ci-dessous réinitialise le filtre éventuellement déjà posé sur la plage
PysFiltre= PysPlage.createFilterDescriptor(true)
PysPlage.filter(PysFiltre)
for each PysDataRange in thiscomponent.DatabaseRanges 'Boucle sur toutes les plages de données
'Si porte sur la même plage
if PysDataRange.DataArea.Sheet = PysNumFeuille and _
PysDataRange.DataArea.StartColumn = PysColDeb and _
PysDataRange.DataArea.EndColumn = PysColFin and _
PysDataRange.DataArea.StartRow = PysLigDeb and _
PysDataRange.DataArea.EndRow = PysLigFin then
PysFiltre = PysDataRange.FilterDescriptor 'Accès aux paramètres du filtre
with PysFiltre 'Les paramètres généraux
.ContainsHeader = true 'La première ligne = en-tête de colonnes
.CopyOutputData = false 'Ne copie pas le résultat ailleurs
.IsCaseSensitive = false 'Ne pas respecter la casse
.UseRegularExpressions = false 'N'utilise pas d'expressions régulières
end with
'Ci-dessous les paramètres par colonne (ici une seule colonne de filtre)
PysChampFiltre(0).Field = 1 'Le nom est en colonne B
PysChampFiltre(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
PysChampFiltre(0).StringValue = "BERTHO"
PysFiltre.setFilterFields(PysChampFiltre()) 'Passe les param. "colonnes" au filtre
PysPlage.filter(PysFiltre) 'Applique le filtre
end if
next PysDataRange
end sub