IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Trouver les 3 plus grands chiffres d'une colonne [WD17]


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut Trouver les 3 plus grands chiffres d'une colonne
    Bonjour,

    J'ai une table qui m'affiche des nombres dans des colonnes.
    Je souhaiterai que pour chaque colonne, on compare les nombres en eux et on met les 3 plus grands nombres en rouge.
    Je sais changer les couleurs, mon problème n'est pas là.
    Ce que je ne sais pas faire c'est trouver les 3 plus grands nombres d'une colonne.
    Ça doit être tout bête mais bon...

    Merci d'avance pour vos lumières !

  2. #2
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par meganulos Voir le message
    J'ai une table qui m'affiche des nombres dans des colonnes.
    Je souhaiterai que pour chaque colonne, on compare les nombres en eux et on met les 3 plus grands nombres en rouge.
    Je sais changer les couleurs, mon problème n'est pas là.
    Ce que je ne sais pas faire c'est trouver les 3 plus grands nombres d'une colonne.
    Ça doit être tout bête mais bon...
    A ma connaissance il n'y a pas fonction qui permette de faire ça.

    Ceci dit je vois 3 méthodes possibles

    1 - Tu récupères pour chaque colonne la 3ème plus grande valeur (une requête)
    Quand tu remplis la table, dans la section de code "affichage d'une ligne" tu mets en couleur rouge si valeur >= à la valeur récupérée précédemment.

    2 - Tu fais un parcours complet de la table pour identifier pour chaque colonne les 3 plus grande valeur (numéro de ligne)
    Puis avec les numéros de lignes récupérés tu change les couleurs

    3 - Un peu moins orthodoxe
    Tu tries par ordre décroissant la 1ère colonne, tu changes la couleur des 3 premières lignes (TableTrie())
    Puis successivement tu fais pareil pour les autre colonnes
    Et la fin tu refait un trie dans l'ordre que tu souhaites
    Petit conseil, si tu optes pour cette méthode, désactive l'affichage de la table avant le traitement puis tu le réactives après (..AffichageActif)
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  3. #3
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Spontanément j'aurai penser à mettre les colonnes à traiter dans un tableau, trier le tableau en décroissant. La première valeur du tableau est la plus grande la deuxième est celle qui va après et ainsi de suite...
    Il faut aussi prévoir la sauvegarde du tableau initial afin de pouvoir récupérer l'indice colonne de chaque valeur. L'utilisation d'un tableau associatif peut être intéressante dans ce cas.

    En supposant que la table contient 5 colonnes d'entiers (C1,C2,...C5).

    1. Transférer la Ligne dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MonTableau est un tableau de 5 entier;
    MonTableau[1] = MaTable[NumLigne].C1;
    MonTableau[2] = MaTable[NumLigne].C2;
    MonTableau[3] = MaTable[NumLigne].C3;
    MonTableau[4] = MaTable[NumLigne].C4 ;
    MonTableau[5] = MaTable[NumLigne].C5;
    2. Sauvegarder les indice dans un tableau associatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    T est un tableau associatif de entiers;
    T[MaTable[NumLigne].C1]=1;
    T[MaTable[NumLigne].C2]=2;
    T[MaTable[NumLigne].C3]=3;
    T[MaTable[NumLigne].C4]=4;
    T[MaTable[NumLigne].C5]=5;
    3. Trier le tableau en décroissant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableauTrie(MonTableau, ttDecrissant);
    4. et enfin colorer les n plus grande colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Pour i = 1 A N faire
    MaTable[NumLigne][T[MonTableau[i]]]..Couleur=CouleurDésirée;
    FIN
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    OK merci pour ces idées !

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut Tri sur les 3 premiers
    Bonjour

    Le problème m'a plu !
    Essaie ceci.

    PROCEDURE Tri3Premiers(IndiceColonne,matable)


    n est entier= TableOccurrence({matable})
    liste est un tableau de n par 2 entiers

    POUR c=1 A n
    liste[c,1]={matable}[c,IndiceColonne]
    liste[c,2]=c
    FIN

    TableauTrie(liste,1)

    {matable}[liste[n,2],IndiceColonne]..CouleurFond=RougeClair
    {matable}[liste[n-1,2],IndiceColonne]..CouleurFond=RougeClair
    {matable}[liste[n-2,2],IndiceColonne]..CouleurFond=RougeClair

  6. #6
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Oops j'avais mal compris la question. Je pensais qu'il s'agissait des trois plus grandes valeurs d'une ligne non pas d'une colonne... au temps pour moi
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] pouvoir connaitre le plus grand chiffre dans une table
    Par nounous54 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/05/2014, 09h46
  2. Trouver les x plus grands par catégorie
    Par guidav dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/12/2011, 09h54
  3. trouver les 10 plus grandes valeurs
    Par audrey2112 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/11/2007, 11h30
  4. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  5. [Debutante] trouver les 5 plus grandes valeurs
    Par Sarrus dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/07/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo