[R] Trier un tablau 2D sur plusieurs colonnes

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

[R] Trier un tablau 2D sur plusieurs colonnes

#1

Message par IceMaKeR »

Bonjour à tous,

Alors, j'ai recherché sur le forum et j'ai pas réussi a trouver comment je peux trier un tableau 2D sur une colonne puis sur une seconde j'ai regardé la fonction _Array2D_Sort mais je vois pas comment l'utiliser!
Je voudrais savoir si c'est bien cette fonction que je dois utiliser ou en faire une.

Merci d'avance.
Modifié en dernier par IceMaKeR le mer. 20 oct. 2010 15:40, modifié 1 fois.
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#2

Message par IceMaKeR »

Je comprends mieux pourquoi je galère!
Apparemment personne n'a réussi a le faire?
Personne n'aurait même pas une piste?!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#3

Message par Tlem »

Pouvez-vous nous dire d'où vient cette fonction _Array2D_Sort, car elle n'est pas en standard dans AutoIt. :roll:

Edit : Trouvé ici => http://www.autoitscript.com/forum/index ... 0&p=577186
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#4

Message par Tlem »

Après avoir jeté un coup d'œil :

1) Modifiez le fichier Array2D.au3 afin de remplacer tous les appels à la fonction _StringSplit par la fonction StringSplit. Sinon cela ne fonctionne pas dans la dernière version de AutoIt.

2) pour utiliser la fonction :

Code : Tout sélectionner

_Array2D_Sort($avArray, $iDescending, $iStart, $iEnd, $iSubItem, $iDim, $iSynchronize)
$avArray représente le tableau à filtrer. Ce tableau sera mis à jour après le filtrage.
$iDescending dont la valeur par défaut est 0 permet de choisir l'ordre croissant ou décroissant. 0 = Croissant, 1 = Décroissant.
$iStart dont la valeur par défaut est 0 permet de choisir l'élément de début du tri. Vous pouvez vouloir trier une colonne à partir de 2ieme élément. ;)
$iEnd dont la valeur par défaut est -1 permet de choisir l'élément de fin pour le tri.
$iSubItem dont la valeur par défaut est 0 permet de choisir la colonne à trier.
$iDim dont la valeur par défaut est 1 permet de choisir le tri sur la dimension 1 ou 2 (j'avoue ne pas comprendre ce paramètre, mais comme je suis trés fatigué, c'est peut être normal ...).
$iSynchronize dont la valeur par défaut est 1 permet de trier l'ensemble du tableau, sinon seul $iSubItem est pris en considération. Cela signifie que pour un tableau, vous allez par exemple trier la première colonne par ordre croissant, mais dans ce cas les valeurs des autres colonnes suivrons (le tri est fait par ligne).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#5

Message par IceMaKeR »

Merci TLEM,

En ce qui concerne le _StringSplit je l'avais déjà modifié.

Bon je vais tenter de faire une fonction pour mon soucis.
Je la posterais ici après.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#6

Message par Tlem »

Vous n'avez pas besoin de fonction, en considérant votre tableau comme un tableau à deux colonnes dont vous voulez trier la colonne 1 (index 0) puis la colonne 2 (index 1), ce simple bout de code suffit :

Code : Tout sélectionner

_Array2D_Sort($avArray, Default, Default, Default, 0, Default, 0)
_Array2D_Sort($avArray, Default, Default, Default, 1, Default, 0)
Évidement, $avArray doit correspondre au tableau à trier.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

Re: [..] Trier un tablau 2D sur plusieurs colonnes

#7

Message par IceMaKeR »

Merci encore, mais le soucis c'est que les lignes ne doivent surtout pas être altérées je m'explique :

J'ai ceci :

0x42 Item A Groupe A
0x5A Item B Groupe B
0x00 Item E Groupe C
0x59 Item A Groupe C
0x27 Item E Groupe A
0x61 Item E Groupe B
0x5E Item A Groupe C
0x00 Item E Groupe A
0x00 Item C Groupe B
0x2B Item B Groupe A
0x29 Item A Groupe A
0x5F Item E Groupe B
0x1E Item A Groupe B
0x1F Item E Groupe C
0x20 Item B Groupe B
0x21 Item A Groupe B
0x5D Item E Groupe C

Je dois obtenir ça :

0x42 Item A Groupe A
0x29 Item A Groupe A
0x20 Item B Groupe A
0x5A Item E Groupe A
0x61 Item E Groupe A
0x00 Item A Groupe B
0x2B Item A Groupe B
0x1E Item B Groupe B
0x5F Item B Groupe B
0x00 Item C Groupe B
0x1F Item E Groupe B
0x5D Item E Groupe B
0x21 Item A Groupe C
0x27 Item A Groupe C
0x00 Item E Groupe C
0x59 Item E Groupe C
0x5E Item E Groupe C

Chaque ligne correspond a une option unique je ne dois donc pas perdre les infos de chaque ligne.
ça correspond a l'option tri multi criteres de excel.

Et là je me dis je me suis mal exprimé au départ !!!
Désolé!
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

Re: [R] Trier un tablau 2D sur plusieurs colonnes

#8

Message par IceMaKeR »

J'ai trouvé!!!
Sur le site Anglais : http://www.autoitscript.com/forum/index ... ntry705519

Cette fonction permet de faire du tri multi colonnes.
► Afficher le texte
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un tablau 2D sur plusieurs colonnes

#9

Message par Tlem »

Bien vu. Je venais de faire pas mal de tests avec _Array2D_Sort(), mais sans pouvoir trier sur plusieurs colonnes. :cry:

Merci pour votre partage de solution.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
IceMaKeR
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 06 nov. 2009 14:15
Status : Hors ligne

Re: [R] Trier un tablau 2D sur plusieurs colonnes

#10

Message par IceMaKeR »

Normal c'est un forum d'entraide après-tout...
Répondre