DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des files, piles, listes et tableaux / Fonctions Tableau
  • Divers
  • Exemples de procédure de tri personnalisée
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Trie un tableau WLangage. Les différents tris suivants peuvent être réalisés :
  • Tri d'un tableau d'éléments simples à une dimension.
  • Tri d'un tableau d'éléments simples à deux dimensions selon une ou plusieurs colonnes.
  • Tri d'un tableau de classes ou de structures à une dimension selon 1 ou plusieurs membres.
  • WINDEVWEBDEV - Code Serveur Tri d'un tableau d'enregistrements selon 1 ou plusieurs rubriques.
  • Tri d'un tableau à une dimension en fournissant une procédure de comparaison.
Remarque : Cette fonction est équivalente à la fonction Trie.
// Tri d'un tableau à une dimension
MonTableau est un tableau de 2 entiers
MonTableau[1] = 4
MonTableau[2] = 1
TableauTrie(MonTableau, ttCroissant)
Trace(MonTableau[1], MonTableau[2])
// Affiche "1" puis "4"
// Tri d'un tableau à 2 dimensions selon la 2ème colonne
TableauTrie(MonTableau, ttCroissant, 2)
// Tri d'un tableau à 2 dimensions selon la 2ème colonne
// (croissant) et la 3ème colonne (décroissant)
TableauTrie(MonTableau, ttColonne, "2;-3")
// Tri d'un tableau en utilisant 1 procédure de comparaison
TableauTrie(MonTableau, ttFonction, Compare)
 
// Procédure de comparaison
PROCÉDURE INTERNE Compare(Elément1, Elément2)
SI Elément1.Membre < Elément2.Membre ALORS RENVOYER -1
SI Elément1.Membre > Elément2.Membre ALORS RENVOYER 1
RENVOYER 0
Syntaxe

Tri d'un tableau d'éléments simples à une dimension Masquer les détails

TableauTrie(<Tableau WLangage> [, <Type de tri>])
<Tableau WLangage> : Tableau
  • Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à une dimension.
    Ce tableau peut également correspondre à un tableau d'éléments simples d'une variable de type avancé (par exemple, tableau "Groupe" dans les variables de type gglContact).
  • Nom de la variable de type Tableau associatif à manipuler.
    AndroidJavaPHP Les tableaux associatifs ne peuvent être être triés dans cette version.
<Type de tri> : Constante optionnelle de type entier
Type de tri à effectuer :
ttCroissant
(Valeur par défaut)
Tri croissant.
Cas d'un tableau associatif : Tri des éléments du tableau associatif :
  • si la constante ttClé est précisée : Le tri est effectué selon l'ordre croissant des clés. En cas d'égalité entre deux clés, les valeurs sont triées selon la valeur croissante si les valeurs sont comparables. Si les valeurs ne sont pas comparables, l'ordre initial est conservé.
  • si la constante ttClé n'est pas précisée : Le tri est effectué selon l'ordre croissant des valeurs. En cas d'égalité entre deux valeurs, les valeurs sont triées selon la clé croissante.
ttDécroissantTri décroissant.
Cas d'un tableau associatif : Tri des éléments du tableau associatif :
  • si la constante ttClé est précisée : Le tri est effectué selon l'ordre décroissant des clés. En cas d'égalité entre deux clés, les valeurs sont triées selon la valeur décroissante si les valeurs sont comparables. Si les valeurs ne sont pas comparables, l'ordre initial est conservé.
  • si la constante ttClé n'est pas précisée : Le tri est effectué selon l'ordre décroissant des valeurs. En cas d'égalité entre deux valeurs, les valeurs sont triées selon la clé décroissante.

Le type de tri peut être combiné avec une ou plusieurs options de tri :
tccOrdreLexicographiqueTableau trié selon l'ordre linguistique.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccRespecteNumériqueTableau trié en respectant l'ordre des valeurs numériques.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansAccentTableau trié sans tenir compte des accents.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansCasseTableau trié sans tenir compte de la casse.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceTableau trié sans tenir compte des espaces au début et à la fin des chaînes.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceIntérieurTableau trié sans tenir compte des espaces à l'intérieur des chaînes.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansPonctuationNiEspaceTableau trié sans tenir compte des espaces et des ponctuations.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
ttCléTableau associatif trié selon l'ordre des clés. Si cette constante n'est pas spécifié, le tableau associatif est trié selon l'ordre des valeurs.
Cette option est utile uniquement sur les tableaux associatifs.

AndroidWidget AndroidJavaPHP Les constantes permettant de spécifier les options de tri ne sont pas disponibles.

Tri d'un tableau d'éléments simples à deux dimensions selon une colonne Masquer les détails

TableauTrie(<Tableau WLangage> [, <Type de tri>] , <Colonne>)
<Tableau WLangage> : Tableau
Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à 2 dimensions.
Ce tableau peut également correspondre à un tableau à deux dimensions d'un type avancé (par exemple tri d'une variable de type xlsDocument selon les valeurs d'une colonne).
<Type de tri> : Constante optionnelle de type entier
Type de tri à effectuer :
ttCroissant
(Valeur par défaut)
Tri croissant
ttDécroissantTri décroissant

Le type de tri peut être combiné avec une ou plusieurs options de tri :
tccOrdreLexicographiqueTableau trié selon l'ordre linguistique.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccRespecteNumériqueTableau trié en respectant l'ordre des valeurs numériques.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansAccentTableau trié sans tenir compte des accents.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansCasseTableau trié sans tenir compte de la casse.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceTableau trié sans tenir compte des espaces au début et à la fin des chaînes.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceIntérieurTableau trié sans tenir compte des espaces à l'intérieur des chaînes.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansPonctuationNiEspaceTableau trié sans tenir compte des espaces et des ponctuations.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.

AndroidWidget AndroidJavaPHP Les constantes permettant de spécifier les options de tri ne sont pas disponibles.
WEBDEV - Code Navigateur Ce paramètre est obligatoire.
<Colonne> : Entier
Indice de la colonne où le tri doit être effectué.

Tri d'un tableau d'éléments simples à deux dimensions selon plusieurs colonnes Masquer les détails

TableauTrie(<Tableau WLangage> , <ttColonne> , <Colonnes>)
<Tableau WLangage> : Tableau
Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à 2 dimensions.
Ce tableau peut également correspondre à un tableau à deux dimensions d'un type avancé (par exemple tri d'une variable de type xlsDocument selon les valeurs d'une ou de plusieurs colonnes).
<ttColonne> : Constante
ttColonne : Constante permettant de trier un tableau d'éléments simples à deux dimensions selon plusieurs colonnes.
La constante ttColonne peut être combinée avec une ou plusieurs options de tri :
tccOrdreLexicographiqueTableau trié selon l'ordre linguistique.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccRespecteNumériqueTableau trié en respectant l'ordre des valeurs numériques.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansAccentTableau trié sans tenir compte des accents.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansCasseTableau trié sans tenir compte de la casse.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceTableau trié sans tenir compte des espaces au début et à la fin des chaînes.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansEspaceIntérieurTableau trié sans tenir compte des espaces à l'intérieur des chaînes.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
tccSansPonctuationNiEspaceTableau trié sans tenir compte des espaces et des ponctuations.
Cette option s'applique à toutes les colonnes sur lesquelles le tri est effectué.
Cette option est utile uniquement sur les tableaux de chaînes de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.

AndroidWidget AndroidJavaPHP Les constantes permettant de spécifier les options de tri ne sont pas disponibles.
<Colonnes> : Chaîne de caractères
Liste des colonnes dans lesquelles le tri doit être effectué. Les différentes colonnes doivent être séparées par un point virgule. Pour indiquer le sens du tri, l'indice de la colonne doit être précédé :
  • du signe "+" (ou de rien) pour un tri croissant.
  • du signe "-" pour un tri décroissant.
    Par exemple : "2;-3" pour effectuer un tri croissant sur la seconde colonne et un tri décroissant sur la troisième colonne.

Tri d'un tableau de classes, de structures ou d'enregistrements à une dimension Masquer les détails

TableauTrie(<Tableau WLangage> , <ttMembre> , <Membres>)
<Tableau WLangage> : Tableau
  • Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à une dimension. Ce tableau peut être :
    • un tableau de classes,
    • un tableau de structures,
    • un tableau de types avancés,
    • WINDEVWEBDEV - Code Serveur un tableau d'enregistrements.
  • Nom de la variable de type Tableau associatif à manipuler. Ce tableau peut être :
    • un tableau associatif de classes,
    • un tableau associatif de structures,
    • un tableau associatif de types avancés,
      AndroidJavaPHP Les tableaux associatifs ne peuvent être être triés dans cette version.
    • WINDEVWEBDEV - Code Serveur un tableau associatif d'enregistrements.
<ttMembre> : Constante
ttMembre : Constante permettant de trier un tableau de classes, de structures ou d'enregistrements à une dimension.
Cas d'un tableau associatif : Les éléments du tableau associatif sont triés selon l'ordre des valeurs des membres précisés. En cas d'égalité entre deux valeurs, les valeurs sont triées selon la clé croissante ou décroissante (selon le sens de tri du premier membre).
La constante ttMembre peut être combinée avec une ou plusieurs options de tri :
tccOrdreLexicographiqueTableau trié selon l'ordre linguistique.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccRespecteNumériqueTableau trié en respectant l'ordre des valeurs numériques.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansAccentTableau trié sans tenir compte des accents.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.
tccSansCasseTableau trié sans tenir compte de la casse.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
tccSansEspaceTableau trié sans tenir compte des espaces au début et à la fin des chaînes.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
tccSansEspaceIntérieurTableau trié sans tenir compte des espaces à l'intérieur des chaînes.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
tccSansPonctuationNiEspaceTableau trié sans tenir compte des espaces et des ponctuations.
Cette option s'applique à tous les membres sur lesquels le tri est effectué.
Cette option est utile uniquement sur les membres de type chaîne de caractères.
WEBDEV - Code Navigateur Cette constante n'est pas disponible.

AndroidWidget AndroidJavaPHP Les constantes permettant de spécifier les options de tri ne sont pas disponibles.
<Membres> : Chaîne de caractères
Nom des membres utilisés comme critère de tri. Si le tri est effectué sur plusieurs membres, leurs noms doivent être séparés par des points-virgules. Pour indiquer le sens du tri, le nom du membre doit être précédé :
  • du signe "+" (ou de rien) pour un tri croissant.
  • du signe "-" pour un tri décroissant.
  • du signe "." ou ":" pour effectuer un tri sur des propriétés chaînées.
    Par exemple :
    - "Membre1;-Membre3" pour effectuer un tri croissant sur le membre membre1 et un tri décroissant sur le membre Membre3.
    - "Source.URL" pour effectuer un tri sur la propriété URL de la propriété Source.
WINDEVWEBDEV - Code Serveur Tri d'un tableau d'enregistrements : Nom des rubriques utilisées comme critère de tri.

Tri d'un tableau à une dimension avec une procédure de tri Masquer les détails

TableauTrie(<Tableau WLangage> , <ttFonction> , <Procédure de tri WLangage>)
<Tableau WLangage> : Tableau
  • Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à une dimension. Ce tableau peut être un tableau de types avancés.
  • Nom de la variable de type Tableau associatif à manipuler.
    AndroidJavaPHP Les tableaux associatifs ne peuvent être être triés dans cette version.
<ttFonction> : Constante
ttFonction : Constante permettant de trier un tableau à une dimension avec une procédure de tri.
<Procédure de tri WLangage> : Nom de procédure
Nom de la procédure utilisée pour trier les éléments du tableau.
  • Cas d'un tableau à une dimension : Procédure WLangage de la forme :
    PROCEDURE MaProcédure(Elément1, Elément2)

    Cette procédure est appelée automatiquement par le mécanisme de tri pour comparer les éléments entre eux deux par deux.
    Si l'élément 1 doit être situé avant l'élément 2 dans l'ordre de tri, la procédure doit renvoyer -1.
    Si l'élément 1 doit être situé après l'élément 2 dans l'ordre de tri, la procédure doit renvoyer 1.
    Si l'élément 1 et l'élément 2 sont identiques, la procédure doit renvoyer 0.
  • Cas d'un tableau associatif : Procédure WLangage de la forme :
    PROCEDURE MaProcédure(Valeur1, Clé1, Valeur2, Clé2)

    Cette procédure est appelée automatiquement par le mécanisme de tri pour comparer les éléments entre eux deux par deux. La comparaison peut être effectuée dans la procédure de tri soit selon les valeurs, soit selon les clés.
    Si l'élément 1 doit être situé avant l'élément 2 dans l'ordre de tri, la procédure doit renvoyer -1.
    Si l'élément 1 doit être situé après l'élément 2 dans l'ordre de tri, la procédure doit renvoyer 1.
    Si l'élément 1 et l'élément 2 sont identiques, la procédure doit renvoyer 0.
Remarques

Divers

  • Cette fonction ne peut pas être utilisée avec les tableaux fixes.
  • Tableau dynamique de variants : Seul un tri personnalisé (avec une procédure de tri) peut être utilisée.
  • Cette fonction ne peut pas être utilisée avec des tableaux de chaînes UNICODE.
  • Pour ajouter un élément dans un tableau trié, utilisez la fonction TableauAjouteTrié.
  • Cette fonction est utilisable sur les tableaux des variables de type avancé.
  • Cette fonction est disponible sur les tableaux associatifs.
    AndroidJavaPHP Cette fonctionnalité n'est pas disponible.

Exemples de procédure de tri personnalisée

Exemple de procédure pour comparer 2 entiers :
PROCÉDURE MaProcédure(nEntier1, nEntier2)
SI nEntier1 > nEntier2 ALORS RENVOYER 1
SI nEntier1 < nEntier2 ALORS RENVOYER -1
RENVOYER 0
Exemple de procédure pour comparer deux éléments d'un tableau de structures :
PROCÉDURE MaProcédure(stVar1, stVar2)
SI stVar1:nEntier > stVar2:nEntier ALORS RENVOYER 1
SI stVar1:nEntier < stVar2:nEntier ALORS RENVOYER -1
RENVOYER 0
Composante : wd300vm.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Tri d'un tabeau associatif
Manifestement, certains paramètres sont apparus au fil des versions sans qu'il soit possible de le déterminer.

Dans mon cas, le tri d'un tableau associatif n'est pas disponible en WinDev 17.
Dommage que cette information ne figure pas.
Jean-Pierre
23 sep. 2023
Trier sur Membre
quand vous relancer la fonction de trie avec les mêmes critères.

si la fonction ne sait pas déterminer le tri car tous les membres respectivement entre les occurrences ont les mêmes valeurs (égalité de comparaison)
les index sont décalés de 1 et cela à chaque lancement de la fonction

Solution : ajouter un membre qui a forcement une valeur unique en dernière position dans le tri, en cas d'égalité de comparaison vous garderez toujours le même ordre de tri

ricil
12 juin 2023
tri d'un tableau de structure
Pour clarifier encore, voici un exemple avec un tableau de structure :

tableauTrie(tabMonTableauDeStructure, ttMembre+tccOrdreLexicographique,"leNomDuMembreDeMaStructure")

(le nom du membre de ma structure étant celui sur lequel je veux faire le tri)

stMaStructure est une structure
sNom est une chaine
nFortune est un entier
fin

tabMonTableau est un tableau de stMaStructure


tableauTrie(tabMonTableau, ttMembre+tccOrdreLexicographique,"sNom")

CV
20 juin 2019

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale