[Résolu][Calc] répéter un tri croissant après cellule vide

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 14:52

Bonjour,

Jusqu'à présent tous les sujets poster m'ont été d'une grande aide, mais la j'ai rien trouvée, c'est surement faisable, mais je n'y arrive pas pour le moment, j'essaie de faire un tri croissant automatique qui s'arrêtera a la première cellule vide puis recommencera a la cellule suivante par ex : tri A2:B3 puis A5:B9 etc. afin d'éviter le faire manuellement a chaque fois.
Pièces jointes
open.ods
exemple
(11.2 Kio) Téléchargé 4 fois
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: répéter un tri croissant après cellule vide

Messagepar Bidouille » 05 Nov 2019 14:55

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://forum.openoffice.org/fr/forum/su ... html#27295

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 10216
Inscrit le : 08 Nov 2005 17:23
Localisation : Brest, France

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 15:31

Pouvez-vous m'aider à avancer svp ? :fou:
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar micmac » 05 Nov 2019 15:34

Bonjour,

Nous ne sommes pas une hotline. Les bénévoles qui assurent l'entraide sur ce forum font toujours le maximum pour répondre. Ils le font lorsqu'ils en ont le temps et bien sûr s'ils ont une réponse à offrir.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6325
Inscrit le : 28 Août 2010 09:45

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar Dude » 05 Nov 2019 16:27

Salut,

Le problème est que ta 1ere zone contient des entêtes de colonne.
Cela rompt la logique que tu pourrais avoir dans une boucle.
Il faudrait donc la supprimer.

Tu pourras ensuite utiliser l'enregistreur de macro.
Le code fourni ne devrait pas être difficile à comprendre.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21122
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 18:23


La modération a écrit:Mettez votre code entre balises [code][ /code], vous rendrez la lecture plus facile.
Pour ce faire, éditez le message, sélectionnez le code et cliquez sur le bouton "Code" en haut à gauche de votre message.

merci, j'ai effacer l'en tête, en essayant j'ai créer ce code qui me facilite un peu plus, quand je clic ça tri automatiquement mais ne le fais pas tout seul
sub Main
for x=1 to 30000
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 = "$A$1:$B$2"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

end sub
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 18:35

Code : Tout sélectionner   AgrandirRéduire
sub Main
for x=1 to 30000
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 = "$A$1:$B$2"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

end sub
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 18:41

ça me suffit quand même, je met résolu trop de paresseux :bravo: merci
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar Dude » 05 Nov 2019 19:37

Et pourtant...
Code : Tout sélectionner   AgrandirRéduire
sub Tri5plages
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dim args2(6) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = true
args2(1).Name = "HasHeader"
args2(1).Value = false
args2(2).Name = "CaseSensitive"
args2(2).Value = false
args2(3).Name = "IncludeAttribs"
args2(3).Value = true
args2(4).Name = "UserDefIndex"
args2(4).Value = 0
args2(5).Name = "Col1"
args2(5).Value = 1
args2(6).Name = "Ascending1"
args2(6).Value = true
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false

rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

'boucle sur les 5 plages
for i = 1 to 5
   dispatcher.executeDispatch(document, ".uno:SelectData", "", 0, Array())
   dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
   dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args3())
   dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args3())
next i
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())

end sub

A tester sur la seconde feuille.
Pièces jointes
open.ods
(12.96 Kio) Téléchargé 4 fois
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21122
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] répéter un tri croissant après cellule vide

Messagepar alex85 » 05 Nov 2019 20:06

Un grand merci :bravo: top
LibO 6.3.3 sous windows 10
alex85
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 05 Nov 2019 14:15


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 2 invité(s)