Répéter une macro X fois

Bonjour,

j’ai fait une macro qui tri une liste de noms en fonction d’un nombre aléatoire qui a été assigné à chaque nom et j’aimerais que cette même macro s’exécute x fois, il y a certainement moyen de l’encadrer entre l’équivalent d’une boucle FOR/TO/NEXT pour cela…ou autre moyen ???

Merci à vous
Olivier

REM  *****  BASIC  *****


sub Tri
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$3:$D$12"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$I$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVD"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(9) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ByRows"
args6(0).Value = true
args6(1).Name = "HasHeader"
args6(1).Value = false
args6(2).Name = "CaseSensitive"
args6(2).Value = false
args6(3).Name = "NaturalSort"
args6(3).Value = false
args6(4).Name = "IncludeAttribs"
args6(4).Value = true
args6(5).Name = "UserDefIndex"
args6(5).Value = 0
args6(6).Name = "Col1"
args6(6).Value = 10
args6(7).Name = "Ascending1"
args6(7).Value = true
args6(8).Name = "IncludeComments"
args6(8).Value = false
args6(9).Name = "IncludeImages"
args6(9).Value = true

dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$I$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())


end sub

Bonjour,
encadrer le tri proprement dit par la procédure de répétition sur un nombre défini.

Sub laboucle
For n=1 to x
[la macro de tri]
Next n
End Sub
1 Like

Merci luclibo, ta réponse m’a bien aidé mais il m’a fallu tenter diverses solutions. Au final, il m’a fallu faire la boucle juste autour de l’instruction : dispatcher.executeDispatch(document, “.uno:DataSort”, “”, 0, args6()) pour que cela marche

for counter = 1 to 300
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args3())
next counter

je joins le fichier final…
tri_alea_test.ods (23,5 Ko)

1 Like