Erreur macro de tri Calc

Bonjour,

J’ai pour la première fois tenté d’écrire une macro pour mémoriser les critères de tri d’une feuille de données Calc.
N’étant pas programmeur j’ai utilisé Mistral…
Voilà la réponse à la question posée :
Pour créer une macro dans LibreOffice Calc qui trie une plage de calcul A1:F200 avec des étiquettes de colonnes “Date”, “Titre”, “Notes”, “Priorité”, “Catégorie”, et “Domaine” en tri croissant sur “Date”, “Priorité”, “Catégorie”, et “Domaine”, vous pouvez utiliser le langage de script Basic intégré à LibreOffice. Voici un exemple de code pour accomplir cela :

Sub TrierPlage()
Dim oSheet As Object
Dim oRange As Object
Dim oCell As Object

' Obtenir la feuille active
oSheet = ThisComponent.CurrentController.ActiveSheet

' Définir la plage de calcul
oRange = oSheet.getCellRangeByName("A1:F200")

' Définir les colonnes à trier
Dim aSortFields(3) As New com.sun.star.table.CellRangeSortField
aSortFields(0).Field = 0 ' Colonne A (Date)
aSortFields(0).SortAscending = True
aSortFields(1).Field = 3 ' Colonne D (Priorité)
aSortFields(1).SortAscending = True
aSortFields(2).Field = 4 ' Colonne E (Catégorie)
aSortFields(2).SortAscending = True
aSortFields(3).Field = 5 ' Colonne F (Domaine)
aSortFields(3).SortAscending = True

' Trier la plage
oRange.sort(aSortFields())

Lorsque j’exécute la macro, le traitement reste bloqué sur la ligne (surlignée) ci-dessous :

Dim aSortFields(3) As New com.sun.star.table.CellRangeSortField

Avec le message suivant :

L’objet n’est pas accessible.
Référence d’objet incorrect.

Quelqun peut-il m’éclairer ? Merci d’avance.

Aramis.

hélas, encore beaucoup (trop) d’hallucinations :face_with_thermometer:

pour vérifier l’existence des objets : LibreOffice: com::sun::star::table Module Reference

et pour du code valide (a priori!) : Sort a Table Using One Column - The Document Foundation Wiki

En installant et en utilisant zBasic

Sub Main
  GlobalScope.BasicLibraries.loadLibrary("zBasic")
  Dim oTri as variant
  oTri = zTri.Demarre
  zTri.Colonne(oTri, 1, "c", "n") 'colonne A 
  zTri.Colonne(oTri, 4, "c", "n") 'colonne D
  zTri.Colonne(oTri, 5, "c", "o") 'colonne E
  zTri.Colonne(oTri, 6, "c", "o") 'colonne F 	
  zTri.Parametre(oTri, "entete", "o")
  zTri.Execute("Feuille1", "A1:F200", oTri)
End sub
1 Like

Merci beaucoup. Je vais m’en occuper !