Bonjour,
Je cherche à trier une ligne et uniquement la ligne voulue ( ligne 10 dans le fichier exemple ) mais le soucis est que lorsque je lance la macro une boite de dialogue me demande si je veux étendre la sélection ou conserver la sélection active.
Or je voudrais toujours conserver la sélection active et que cette macro s’exécute sans action de l'utilisateur.
Auriez vous une idée de comment faire s'il vous plait ?
Merci
[Résolu][Calc] Tri d'une ligne seule
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 80
- Inscription : 06 juin 2016 20:23
[Résolu][Calc] Tri d'une ligne seule
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par boulauventre le 30 juin 2020 09:34, modifié 1 fois.
libre office 6.4.4 sous Windows 10
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Tri d'une ligne seule
Salut,
Avec autant de messages à ton compteur, on va encore rappeler qu'il faut publier également le code.
Cela nous évite de télécharger des documents à n'en plus finir.
Tu utilises le Dispatcher avec comme argument ByRows. Il est donc logique que cela ne fonctionne pas.
Précise également par une copie écran, le résultat escompté.
Avec autant de messages à ton compteur, on va encore rappeler qu'il faut publier également le code.
Cela nous évite de télécharger des documents à n'en plus finir.
Code : Tout sélectionner
sub TriRDV
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 = "$B$10:$I$10"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(9) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = false
args2(1).Name = "HasHeader"
args2(1).Value = false
args2(2).Name = "CaseSensitive"
args2(2).Value = false
args2(3).Name = "NaturalSort"
args2(3).Value = false
args2(4).Name = "IncludeAttribs"
args2(4).Value = true
args2(5).Name = "UserDefIndex"
args2(5).Value = 0
args2(6).Name = "Col1"
args2(6).Value = 15
args2(7).Name = "Ascending1"
args2(7).Value = true
args2(8).Name = "IncludeComments"
args2(8).Value = false
args2(9).Name = "IncludeImages"
args2(9).Value = true
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
end sub
Précise également par une copie écran, le résultat escompté.
-
- Membre OOrganisé
- Messages : 80
- Inscription : 06 juin 2016 20:23
Re: [Calc] Tri d'une ligne seule
Bonjour Dude,
Il est vrai que j'aurai du mettre une capture d'écran pour expliquer mon problème.
En fait le code n'est pas le soucis, il fonctionne.
Mon problème est plutôt d'éviter à l'utilisateur de devoir valider une boite de dialogue a chaque fois que le tri doit se faire. (Sinon je trouve que ça casse tout l'avantage de l'automatisation des macros)
En copie d'écran, On aperçoit la boite de dialogue automatiquement générée. C'est cette boite de dialogue que je souhaiterai ne pas voir apparaître. Car dans mon cas la réponse à cette boite de dialogue sera toujours "Sélection Active".
h**ps://zupimages.net/up/20/27/7wc2.png
Merci de votre aide
Il est vrai que j'aurai du mettre une capture d'écran pour expliquer mon problème.
En fait le code n'est pas le soucis, il fonctionne.
Mon problème est plutôt d'éviter à l'utilisateur de devoir valider une boite de dialogue a chaque fois que le tri doit se faire. (Sinon je trouve que ça casse tout l'avantage de l'automatisation des macros)
En copie d'écran, On aperçoit la boite de dialogue automatiquement générée. C'est cette boite de dialogue que je souhaiterai ne pas voir apparaître. Car dans mon cas la réponse à cette boite de dialogue sera toujours "Sélection Active".
h**ps://zupimages.net/up/20/27/7wc2.png
La modération vous a écrit: Relisez ENCORE les règles : pas d'image hébergée en dehors de ce forum.
Merci de votre aide
Code : Tout sélectionner
sub TriRDV
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 = "$B$10:$I$10"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(9) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = false
args2(1).Name = "HasHeader"
args2(1).Value = false
args2(2).Name = "CaseSensitive"
args2(2).Value = false
args2(3).Name = "NaturalSort"
args2(3).Value = false
args2(4).Name = "IncludeAttribs"
args2(4).Value = true
args2(5).Name = "UserDefIndex"
args2(5).Value = 0
args2(6).Name = "Col1"
args2(6).Value = 15
args2(7).Name = "Ascending1"
args2(7).Value = true
args2(8).Name = "IncludeComments"
args2(8).Value = false
args2(9).Name = "IncludeImages"
args2(9).Value = true
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
end sub
libre office 6.4.4 sous Windows 10
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Tri d'une ligne seule
Dans ce cas, tu ne te sers pas du Dispatcher et tu passes par la méthode Sort sur ta plage de données.boulauventre a écrit :Mon problème est plutôt d'éviter à l'utilisateur de devoir valider une boite de dialogue a chaque fois que le tri doit se faire.
Code : Tout sélectionner
Sub triLigne
Dim oTriSens(0) as new com.sun.star.util.SortField
Dim oTriDesc(1) as new com.sun.star.beans.PropertyValue
oDoc = thisComponent
oFeuil = oDoc.CurrentController.ActiveSheet
oTriSens(0).Field = 0
oTriSens(0).SortAscending = True
oTriDesc(0).Name = "SortFields"
oTriDesc(0).Value = oTriSens()
oTriDesc(1).Name = "IsSortColumns"
oTriDesc(1).Value = True
oZone = oFeuil.getCellRangeByName("B10:I10")
oZone.Sort(oTriDesc())
End Sub
-
- Membre OOrganisé
- Messages : 80
- Inscription : 06 juin 2016 20:23
Re: [Résolu][Calc] Tri d'une ligne seule
Merci Dude.
Ca fonctionne parfaitement
Je ne connaissais pas la méthode Sort
Merci encore bonne journée
Ca fonctionne parfaitement
Je ne connaissais pas la méthode Sort
Merci encore bonne journée
libre office 6.4.4 sous Windows 10