[Résolu][Calc] Sélection plage variable

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 !
alansan2013
Membre OOrganisé
Membre OOrganisé
Messages : 57
Inscription : 10 juil. 2013 16:08

[Résolu][Calc] Sélection plage variable

Message par alansan2013 »

Bonjour à tous!

Sur la feuille "Classe" de mon fichier ci-joint, il y a en 2 colonnes une liste d'élève qui varie d'année en année.

J'ai créé un bouton pour trier la liste par ordre alphabétique des noms de famille.(macro = "trierhaut")

pour l'instant, la plage est fixée dans la macro: de B2 à C23 .

Code : Tout sélectionner

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
'Plage fixée :
args1(0).Value = "$B$2:$C$23"
J’aimerai automatiser la sélection!

J'ai déjà une formule en K9 qui détermine le nombre d'élève de la liste à prendre en compte.

J'ai créé en K10 une formule qui crée la référence réelle de la dernière cellule de la plage à sélectionner. (le 18ème élève, donc le dernier, qui est donc en C (18+1) = C19

Je bloque pour faire que la macro sélectionne de la cellule (fixe) $B$2 .... à cette cellule de fin de plage qui est calculée (string) en K10 qui serait alors $C$19

Peut-on m'aider svp ?
;-)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par alansan2013 le 26 août 2015 08:36, modifié 2 fois.
libO 4.4.5.2 ; ubuntu 12.04.5 64bits
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] sélection plage variable

Message par zeguedon »

Bonjour,

Si tu définis dès le départ une plage plus grande que la plage occupée, le tri s'effectue correctement quand même.

A+

PS: cependant je remarque qu'avec ma configuration, la première cellule n'est jamais triée :roll: quel que soit le nombre de cellules sélectionnées pour effectuer la tri. :roll:

Et si tu veux vraiment une macro pour trouver la dimension de ta plage :

Code : Tout sélectionner

sub Main
lesFeuilles = Thiscomponent.Sheets
maFeuille = lesFeuilles.getByName("Classe")
premiereColonne = maFeuille.getCellRangeByPosition(1,1,1,35)
lignesVides() = premiereColonne.queryEmptyCells.RangeAddresses
premiereLigneVide = lignesVides(0).StartRow
plageAtrier = maFeuille.getCellRangeByPosition(1,1,2,premiereLigneVide-1)
print plageAtrier.AbsoluteName
end sub
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
alansan2013
Membre OOrganisé
Membre OOrganisé
Messages : 57
Inscription : 10 juil. 2013 16:08

Re: [Calc] Sélection plage variable

Message par alansan2013 »

merci pour l'idée zeguedon...

mais en réfléchissant à tout ça,j'ai fini par trouver comment faire!!!

Code : Tout sélectionner

Sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
'*** ajout :
mydocument = ThisComponent.Sheets
'*** Fin ajout

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
'*** modification :
args1(0).Value = mydocument.getbyname("Classe").getCellRangeByName("K5").String
'*** Fin modification

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

rem ----------------------------------------------------------------------
dim args2(7) 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 = "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 = 2
args2(7).Name = "Ascending1"
args2(7).Value = true

dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
End Sub

formule pour avoir valeur de "K5" string = "$B$2:$C$"&L9+1
Dernière modification par Oukcha le 26 août 2015 12:36, modifié 1 fois.
Raison : Balises [code] et [/code] = lecture et selection simplifiées de votre code
libO 4.4.5.2 ; ubuntu 12.04.5 64bits