[Résolu][Calc] Définir 1 Zone et trier ordre croissant

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 !
Avatar de l’utilisateur
redgbreaker
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 22 avr. 2012 11:28

[Résolu][Calc] Définir 1 Zone et trier ordre croissant

Message par redgbreaker »

Bonsoir tout le monde!
Je viens de nouveau m'adresser à vous afin d'obtenir peut-être de l'aide. J'ai fait de multiples recherche, je suis tombé sur de très bon fil mais rien ne correspondant à ce que je cherche vraiment. Et l'enregistrement d'une macro ne me sert à rien vu que la zone peut varier. Donc je viens vous voir.

Je cherche une macro (affectée à un bouton) qui permettrait de définir automatiquement la zone à trier.
Sachant que la zone commence toujours en A4 et s'étant jusqu'à la colonne G. La fin de cette zone s'arrête uniquement si G...supérieur à "0" ou rien. C'est à dire que si une cellule de la colonne G contient un "0" ou est vide alors la zone de sélection s'arrête à celle qui contient une valeur (1, 2, 125...).
Ensuite le trie s'effectue par ordre croissant sur G. :mrgreen:
Je vous joint le fichier en question. ça me semble un truc de fou.
merci encore à tous de votre aide que vous pourrez m'apporter. :bravo:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par redgbreaker le 02 juin 2012 13:48, modifié 1 fois.
LibreOffice 4.0.0.3 sous Windows 7 Ultimate SP1 x64 Fr
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information... Albert Einstein
L'accumulation des connaissances n'est pas la connaissance. Alberto Mangue
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]Définir une Zone et trier ordre croissant

Message par Churay »

Bonsoir
redgbreaker a écrit :Sachant que la zone commence toujours en A4 et s'étant jusqu'à la colonne G. La fin de cette zone s'arrête uniquement si G...supérieur à "0" ou rien. C'est à dire que si une cellule de la colonne G contient un "0" ou est vide alors la zone de sélection s'arrête à celle qui contient une valeur (1, 2, 125...).
Ensuite le trie s'effectue par ordre croissant sur G.
Il s'agit donc de balayer les cellules de G4 à A4 pour trouver une cellule donc la valeur est >0, après quoi il suffit de définir la plage à trier en tenant compte de cette cellule pertinente.

Les exemples de tri sont suffisamment nombreux sur le forum pour en reprendre un et le faire précéder de la recherche citée ci-dessus.

Si le tri doit aller au-delà de la ligne 4, il suffit de placcer ce code dans une boucle qui balayera les lignes 4 à nnn.
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
redgbreaker
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 22 avr. 2012 11:28

Re: [Calc]Définir une Zone et trier ordre croissant

Message par redgbreaker »

Bonjour tout le monde!
merci Churay pour ta réponse et comme tu le dis des exemples ça n'en manque pas, même trop!
Cependant j'ai essayé de faire quelque chose comme à chaque fois bien sur et avec l'aide du livre

Code : Tout sélectionner

Option Explicit
Sub TrierColonne()
Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
Dim monFiltre As Object
Dim ConfigTri(0) As New com.sun.star.table.TableSortField
Dim DescrTri As Variant

Dim champsFiltre(0) As New com.sun.star.sheet.TableFilterField
With champsFiltre(0)
.Connection = com.sun.star.sheet.FilterConnection.AND
.Field = 6 ' colonne G : Chiffre
.Operator = com.sun.star.sheet.FilterOperator.GREATER
.IsNumeric = True
.NumericValue = 0
End With

monDocument = ThisComponent
lesFeuilles = monDocument.Sheets
maFeuille = lesFeuilles.getByName("Feuille1")
maZone = maFeuille.getCellRangeByName("A4:G100")
monFiltre = maZone.createFilterDescriptor(true)

ConfigTri(0).Field = 6 ' colonne G
ConfigTri(0).IsAscending = true

With monFiltre
.FilterFields = champsFiltre()

End With
maZone.filter(monFiltre)

End Sub
Le résultat est bof! effectivement ça ne prend que les cellules pleine de la colonne G, mais le trie par ordre croissant ne se fait pas et je ne vois pas pourquoi car il me semble l'avoir mis dans le code (certainement très mal :| )
Pourriez-vous m'éclairer? Merci encore
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 4.0.0.3 sous Windows 7 Ultimate SP1 x64 Fr
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information... Albert Einstein
L'accumulation des connaissances n'est pas la connaissance. Alberto Mangue
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc]Définir une Zone et trier ordre croissant

Message par luky-luke »

Bonjour redgbreaker,

Tu n'utilise à aucun moment l'argument oConfigTri, tu lui as bien donné une valeur, mais elle n'est pas utilisée par le code !

Exemple :

Code : Tout sélectionner

Sub Trier
Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
Dim oConfigTri(0) As New com.sun.star.table.TableSortField
Dim oDescTri(2) As New com.sun.star.beans.PropertyValue

monDocument = ThisComponent
lesFeuilles = monDocument.Sheets
maFeuille = lesFeuilles.getByName("Feuille1")
maZone = maFeuille.getCellRangeByName("A4:G100")

oConfigTri(0).Field = 6 ' colonne G
oConfigTri(0).IsAscending = true
    oDescTri(0).name="IsSortColumns"
    oDescTri(0).value=False
    oDescTri(1).name="SortFields"
    oDescTri(1).value=oConfigTri()

maZone.sort(oDescTri())
End Sub
 Ajout : Édition pour faute d'ortographe dans le code sur oConfigTri !! 
Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
redgbreaker
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 22 avr. 2012 11:28

Re: [Calc]Définir une Zone et trier ordre croissant

Message par redgbreaker »

Pan un coup de Luky luke (Bonjour!) qui d'une balle me rappelle que j'ai fait un OUBLI! :fou:
Tellement rapide que tes doigts agiles avaient omis le petit "o" de "ConfigTri"... mais ton œil affuté l'avait remarqué! :mrgreen:
Sur ce, c'est vrai que j'avais oublié l'argument! Dur de mettre de l'eau dans un verre sans verre!
Donc j'ai pu de fait modifier ma première macro pour obtenir le résultat souhaité.
Donc encore merci!
Je joint mon fichier contenant 3 étapes (1 tri, 1 classement, et une fusion des 2 - Trier/classer-)
Le fil passe Résolu! :super:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 4.0.0.3 sous Windows 7 Ultimate SP1 x64 Fr
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information... Albert Einstein
L'accumulation des connaissances n'est pas la connaissance. Alberto Mangue
lesampaud
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 29 août 2013 08:11

Re: [Résolu][Calc] Définir 1 Zone et trier ordre croissant

Message par lesampaud »

merci

Je pensais, qu'en sélectionnant la zone, ceci acrémentait la macro à l'instar de Excel dans le développeur
Je vais me pencher sur la question

Merci
au bureau : libreoffice 7.3.0.3 sous W10, ordis d'administration bridés pour les mises à jour
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9256
Inscription : 28 août 2010 08:45

Re: [Résolu][Calc] Définir 1 Zone et trier ordre croissant

Message par micmac »

Bonjour et bienvenue,

Ce sujet date du 01 Juin 2012 !

Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la règle n° 12 :
Ne postez pas à la suite d'un fil de discussion datant de plus d'un mois même si celui-ci n'est pas marqué [Résolu]. Vous ne faites qu'exhumer de vieux problèmes sur d'anciennes versions qui n'ont plus cours.
Déterrage = verrouillage

Continuez sur votre fil : https://forum.openoffice.org/fr/forum/v ... 89#p301789

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac