Bonsoir Philippe,
Le 06/11/2018 à 14:20, Philippe BLANCHARD a écrit :
Bonjour à tous,
Comme je n'ai pas trouvé la possibilité d'enregistrer une macro sous
LibreOffice (contrairement à Excel), je voulais savoir si un d'entre
vous avait déjà été confronté à un tri avec 2 critères ?
Merci par avance de votre retour.
Excellent après midi.
Amicalement,
Philippe
Par macro, on peut trier sur autant de critères qu'on veut.
Pour ça il faut deux outils : un descripteur des colonnes à trier
(FieldDesc dans l'exemple) et un descripteur de tri (qui va recevoir le
premier) (SortDesc dans l'exemple).
FieldDesc permet de donner le n° de la colonne de tri (.Field) et de
spécifier le sens du tri (.IsAscending). Le sens du tri est ascendant
par défaut, donc pas besoin a priori de mettre
FieldDesc(0).IsAscending = True
si ce n'est par souci de complétude.
L'exemple ci-dessous trie sur UNE seule colonne (col. G, position 6)
8< ----------------------------------------------------
Sub Trier()
Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim FieldDesc(0) As New com.sun.star.table.TableSortField
Dim SortDesc(2) As New com.sun.star.beans.PropertyValue
'récupérer la plage à trier
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName("Feuille1")
oRange = oSheet.getCellRangeByName("A4:G100")
'on peut aussi mettre un nom défini par ailleurs (ex : "MaPlage")
'oRange = oSheet.getCellRangeByName("MaPlage")
FieldDesc(0).Field = 6 ' colonne G (on compte à partir de 0)
FieldDesc(0).IsAscending = True
SortDesc(0).name="IsSortColumns"
SortDesc(0).value=False
SortDesc(1).name="SortFields"
SortDesc(1).value=oConfigTri()
oRange.sort(SortDesc())
End Sub
8< ----------------------------------------------------
pour trier sur DEUX colonnes (la colonne C en 2e critère, descendant),
il faut déclarer un FieldDesc de plus
Dim FieldDesc(1) As New com.sun.star.table.TableSortField
et ajouter la description pour la 2e colonne, par ex :
FieldDesc(1).Field = 2 ' colonne C
FieldDesc(1).IsAscending = False
etc. pour trier sur plus de lignes.
PS : je vois que tu te plonges dans les macros. C'est un vaste monde qui
s'ouvre à toi. Je ne saurais trop te conseiller de te documenter sur ce
sujet.
Les sources que je connais/pratique :
-- la Bible (en français) de Marcelly et Godard
https://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-et-libreoffice-9782212132472
existe en papier et en numérique
-- l'autre Bible (en anglais) par Andrew Pitonyak
http://www.pitonyak.org/OOME_3_0.odt
et plein de forums ou de listes de diffusion ;-)
Note que Ask est une excellente ressource aussi :
-- en anglais
https://ask.libreoffice.org/en/questions/
-- et depuis peu en français
https://ask.libreoffice.org/fr/questions/
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy