OVH Cloud OVH Cloud

ListView + tri

4 réponses
Avatar
Nicolas
Bonjour,

Je cherche =E0 trier un ListView avec des donn=E9es de type=20
nombre ou date. Pour les cha=EEnes de caract=E8res=20
alphab=E9tique pas de probl=E8me, mais d=E9s que je lui demande=20
de trier des nombres, il me les trie en alpab=E9tique

Ex: 10 ,2, 105, 3 =E0 trier

Tri du ListView : 10, 105, 2, 3

Comment faire ?

Merci

Nicolas

4 réponses

Avatar
Bismark Prods
En fait il y a 2 solutions.

1ere : créé une fonction qui formate une chaine de caractère de longueur
fixe tel que par exemple fillstring(machaine, 5)
où cette fonction retourne une chaine de longueur 5 avec ma chaine à droite
cela permet de trier juste

2eme : crée une colonne fantome dans ton listview dans laquelle tu remplis
avec des "0" devant les chiffres et lorsque l'utilisation clique pour trier
la colonne visible tu "chinde" le click pour trier sur la colonne fantome.


"Nicolas" a écrit dans le message de
news:10a601c37e99$d2b37c20$
Bonjour,

Je cherche à trier un ListView avec des données de type
nombre ou date. Pour les chaînes de caractères
alphabétique pas de problème, mais dés que je lui demande
de trier des nombres, il me les trie en alpabétique

Ex: 10 ,2, 105, 3 à trier

Tri du ListView : 10, 105, 2, 3

Comment faire ?

Merci

Nicolas
Avatar
Zoury
> 1ere : créé une fonction qui formate une chaine de caractère de longueur
fixe tel que par exemple fillstring(machaine, 5)
où cette fonction retourne une chaine de longueur 5 avec ma chaine à


droite
cela permet de trier juste



?! je ne suis pas sûr de comprendre... Les chaînes de caractères seront
quand même trié selon le tri normal d'une chaîne de caractères soit :

10
105
2
3

note : pour ta fonction FillString un simple Right$(Space$(lLen) & machaine,
lLen), où lLen est la longueur désiré, devrait suffire.. (alligne à droite)

2eme : crée une colonne fantome dans ton listview dans laquelle tu remplis
avec des "0" devant les chiffres et lorsque l'utilisation clique pour


trier
la colonne visible tu "chinde" le click pour trier sur la colonne fantome.



Même problème que pour la solution 1... Pour trier des chaines représentant
des nombres correctement, il *faut* les convertirs en nombre lors du trie.
Ce que la méthode proposée dans mon message permet de faire..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Zoury
ahhh!

Mais, personnellement, je n'aime pas ces methodes "broches a foin". Autant
apprendre a utiliser les bonnes technique de programmation. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Bismark Prods" wrote in message
news:#
Alors non Zoury, car tu n'a pas pensé à toutes les applications pratiques
que peut revetir une telle mini-fonction. On peut l'étendre et proposer


des
fonctionnalités très utiles pour le reste de l'application surtout


lorsqu'on
travaille avec les listviews.
Et si tu fais l'exemple pratique tu constateras que Listview traite les
espaces comme des caractères a part entière ce qui fait que les tris se


fera
parfaitement ...

ce qui donnera donc
2
3
10
105

l'espace venant avant le chiffre dans la hierarchie des tris

"Zoury" a écrit dans le message de
news:
> > 1ere : créé une fonction qui formate une chaine de caractère de


longueur
> > fixe tel que par exemple fillstring(machaine, 5)
> > où cette fonction retourne une chaine de longueur 5 avec ma chaine à
> droite
> > cela permet de trier juste
>
> ?! je ne suis pas sûr de comprendre... Les chaînes de caractères seront
> quand même trié selon le tri normal d'une chaîne de caractères soit :
>
> 10
> 105
> 2
> 3
>
> note : pour ta fonction FillString un simple Right$(Space$(lLen) &
machaine,
> lLen), où lLen est la longueur désiré, devrait suffire.. (alligne à
droite)
>
> > 2eme : crée une colonne fantome dans ton listview dans laquelle tu
remplis
> > avec des "0" devant les chiffres et lorsque l'utilisation clique pour
> trier
> > la colonne visible tu "chinde" le click pour trier sur la colonne
fantome.
>
> Même problème que pour la solution 1... Pour trier des chaines
représentant
> des nombres correctement, il *faut* les convertirs en nombre lors du


trie.
> Ce que la méthode proposée dans mon message permet de faire..
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
> Merci de poster les réponses au groupe afin d'en faire profiter à tous
>
>




Avatar
Bismark Prods
Comme tu y vas ! ... les bonnes techniques sont celles qui permettent de
produire vite, avec des possiblités d'extensions pour éviter de refaire
depuis le début... Sert à rien de se compliquer la vie à faire selon Bilou

"Zoury" a écrit dans le message de
news:%
ahhh!

Mais, personnellement, je n'aime pas ces methodes "broches a foin". Autant
apprendre a utiliser les bonnes technique de programmation. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Bismark Prods" wrote in message
news:#
> Alors non Zoury, car tu n'a pas pensé à toutes les applications


pratiques
> que peut revetir une telle mini-fonction. On peut l'étendre et proposer
des
> fonctionnalités très utiles pour le reste de l'application surtout
lorsqu'on
> travaille avec les listviews.
> Et si tu fais l'exemple pratique tu constateras que Listview traite les
> espaces comme des caractères a part entière ce qui fait que les tris se
fera
> parfaitement ...
>
> ce qui donnera donc
> 2
> 3
> 10
> 105
>
> l'espace venant avant le chiffre dans la hierarchie des tris
>
> "Zoury" a écrit dans le message de
> news:
> > > 1ere : créé une fonction qui formate une chaine de caractère de
longueur
> > > fixe tel que par exemple fillstring(machaine, 5)
> > > où cette fonction retourne une chaine de longueur 5 avec ma chaine à
> > droite
> > > cela permet de trier juste
> >
> > ?! je ne suis pas sûr de comprendre... Les chaînes de caractères


seront
> > quand même trié selon le tri normal d'une chaîne de caractères soit :
> >
> > 10
> > 105
> > 2
> > 3
> >
> > note : pour ta fonction FillString un simple Right$(Space$(lLen) &
> machaine,
> > lLen), où lLen est la longueur désiré, devrait suffire.. (alligne à
> droite)
> >
> > > 2eme : crée une colonne fantome dans ton listview dans laquelle tu
> remplis
> > > avec des "0" devant les chiffres et lorsque l'utilisation clique


pour
> > trier
> > > la colonne visible tu "chinde" le click pour trier sur la colonne
> fantome.
> >
> > Même problème que pour la solution 1... Pour trier des chaines
> représentant
> > des nombres correctement, il *faut* les convertirs en nombre lors du
trie.
> > Ce que la méthode proposée dans mon message permet de faire..
> >
> > --
> > Cordialement
> > Yanick Lefebvre - MVP pour Visual Basic
> > http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> > http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
> >
> > Merci de poster les réponses au groupe afin d'en faire profiter à tous
> >
> >
>
>