Tri dans un tri....

cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 16 avril 2004 à 23:58
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 17 avril 2004 à 23:47
Bonsoir à tous,
Je reviens vers vous pour, évidement, un autre problème insoluble pour mes faibles connaissance en VB6!

J'ai 02 colonnes de nombres.

Je doit faire un tri sur la deuxième colonne et aussi sur la première.
En fait, il s'agit de places et de points. Je dois trier sur les places et départager les ex aequo sur les points.

Je fait un tri des places selon l'Algorithme Shell-Metzner optimisé, tout est OK, le tri fonctionne impec. Mais je ne sais pas comment effectuer en même temps un tri sur les points pour départage.

Exemple plus parlant:

Données:
25.5 1°
24.5 2°
23.5 3°
23.7 3°
23.4 3°
22.0 6°

Il me faut départager les 3° dans l'ordre décroissant des points,donc en fait avoir à la fin: pour les 3°:

23.7 3°
23.5 4°
23.4 5°

Précision, dans mon prog, tous les chiffres sont numériques donc en théorie pas de blème de tri alphanumérique.

Si quelqu'un à une bonne idée...

Bonne progs à tous

Rocknroll2

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)

9 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
17 avril 2004 à 00:28
Salut
Pour l'idée j'en ai peut etre une, il reste a la tester
Partant sur du string par contre, mais tu peux toujours les changer de val en strg et inversement, et meme peut etre que cela fonctionne sans changement

j'ai eu un pb de ce genre mais pour differencier le type de tri soit en fonction de l'age du nom de la ville etc

en fait j'ai regroupé toutes les "valeurs" dans une seule et meme variables

du type : var1 = "23.5" & "3°"
var2 = "23.7" & "3°"

et puis :
if var1 < var2 then
VarIntermed = var2
var2 = var1
var1 = varintermed
c'est le tri a bulle je crois mais l'idée c'est de comparer toute la chaine regroupé. chez moi ca a fonctionné

esperant que ca peut aider
bonne prog
liquide
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 avril 2004 à 10:28
Merci liquide,
C'est peut-être une bonne idée! Je vais tenter et je post ici le résultat.
Merci pour ta réponse rapide.
A+

Bonne prog
rocknroll2

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 avril 2004 à 18:10
Bonjour

Dans ton tri Shell-Metzner optimisé, tu dois avoir quelque part une ligne du genre :

If Place(i) < Place(j) Then Exit Do

(pour dire que c'est déjà dans le bon ordre des places)

puis la ligne de permutation.

Entre les deux, tu ajoutes (en adaptant) :

If Place(i) = Place(j) And Points(i) > Points(j) Then Exit Do

pour dire que pour la même place, l'ordre des points est déjà bon.
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 avril 2004 à 19:13
Slt rene38

Merci pour ta solution, je vais l'essayer car la soluce de liquide ne me convient pas. Elle est peut-être OK pour d'autres applis, mais moi cela me mélange les pinceaux.
Merci encore tout de même à liquide, c'est grace à ce genre de réponse et à des aides comme vous que l'on peut progresser et comprendre mieux les choses.

rene38 du dpt 38 Isère ?

rocknroll2 du 69 !

Bonne progs à tous

rocknroll2

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 avril 2004 à 19:17
Tiens, rené38, peut-être as tu une autre soluce.
J'ai un Msflexgrid qui tourne bien, mais le tableau est trop large (trop de colonnes)
Je veux pourtant qu'il s'affiche en entier dans la largeur, alors je pensais réduire le Font des colonnes, mais pour l'instant je n'ai pas trouvé de commande qui gère le pas du font que je voudrais passer à 6 afin de pouvoir réduire la largeur de mes colonnes qui n'ont pas toutes la même largeur.

Bye

Rocknroll2

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 avril 2004 à 22:49
Salut rocknroll2
1. Natif du 38 mais immigré dans le 69 !
2. dans 10/15 ans ... tu auras mon âge actuel.
3. La propriété CellFontSize doit répondre à ta question sur MsFlexGrid
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 avril 2004 à 23:37
rene38
Même dans 10/15 ans je ne t'arriverai pas encore à la cheville
Mais bon, l'espoir fait vivre....

Pour le CellFontSize, si je ne me trompe pas (je vais vérifier), cela concerne tout le Flexgrid. Je cherche qque chose qui puisse permettre de donner des font et des "pas" différents selon les colonnes.

Si toi ou qqu'un d'autre a cette connaissance...

a+
rocknroll2 du 69 Nord Ouest

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
17 avril 2004 à 23:44
dsl que ca n'ai pas fonctionner.
juste pour rajouter une "astuce" pour mes prob, j'avais mis un vbtab entre le reproupement et ensuite je le "split" pour le separer de nouveau.

dsl pour toi
bonne prog
liquide
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
17 avril 2004 à 23:47
oups
Mille excuses rené38
C'est OK pour les colonnes, mais je cherchais à descendre à 6pts et le ms sans serif de base ne descend pas à 6pts.
Par contre c'est OK en Arial Narrow.
Mais tous les utilisateurs ont-ils Arrial narrow dans leurs polices ?

Bon WE

Rocknroll2

Ouais, je serais un Pro du VB6 dans 10/15 ans
;)
0
Rejoignez-nous