[R] Trier un tablau 2D sur plusieurs colonnes
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Trier un tablau 2D sur plusieurs colonnes
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.
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.
Re: [..] Trier un tablau 2D sur plusieurs colonnes
Je comprends mieux pourquoi je galère!
Apparemment personne n'a réussi a le faire?
Personne n'aurait même pas une piste?!
Apparemment personne n'a réussi a le faire?
Personne n'aurait même pas une piste?!
- Tlem
- 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
Pouvez-vous nous dire d'où vient cette fonction _Array2D_Sort, car elle n'est pas en standard dans AutoIt. 
Edit : Trouvé ici => http://www.autoitscript.com/forum/index ... 0&p=577186
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é".
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é".
- Tlem
- 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
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 :
$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).
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)$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é".
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é".
Re: [..] Trier un tablau 2D sur plusieurs colonnes
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.
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.
- Tlem
- 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
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 :Évidement, $avArray doit correspondre au tableau à trier.
Code : Tout sélectionner
_Array2D_Sort($avArray, Default, Default, Default, 0, Default, 0)
_Array2D_Sort($avArray, Default, Default, Default, 1, Default, 0)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é".
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é".
Re: [..] Trier un tablau 2D sur plusieurs colonnes
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é!
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é!
Re: [R] Trier un tablau 2D sur plusieurs colonnes
J'ai trouvé!!!
Sur le site Anglais : http://www.autoitscript.com/forum/index ... ntry705519
Cette fonction permet de faire du tri multi colonnes.
Sur le site Anglais : http://www.autoitscript.com/forum/index ... ntry705519
Cette fonction permet de faire du tri multi colonnes.
► Afficher le texte
- Tlem
- 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
Bien vu. Je venais de faire pas mal de tests avec _Array2D_Sort(), mais sans pouvoir trier sur plusieurs colonnes.
Merci pour votre partage de solution.
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é".
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é".
Re: [R] Trier un tablau 2D sur plusieurs colonnes
Normal c'est un forum d'entraide après-tout...

