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

Macros et VBA Excel Discussion :

Trier tableau Integer petit au plus grand


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut Trier tableau Integer petit au plus grand
    Bonjour,

    J'ai un tableau d'Integer à 2 dimensions comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim jeu(1 To 2, 1 To 8) As Integer
    J'introduis en suite des résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jeu (1,1) = 2
    jeu (1,2) = 4
    etc...
    J'aimerais trier du petit au plus grand les valeurs dans la deuxième dimensions.
    Quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Présenté comme ça, autant que tu insères chaque valeur à sa place (en décalant celles qui suivent pour faire de la place).
    Ca sera tout aussi rapide voire plus rapide qu'un tri à posteriori.
    Sinon une simple recherche t'amènera plein d'algorithmes de tris.
    eric

  3. #3
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    Présenté comme ça, autant que tu insères chaque valeur à sa place (en décalant celles qui suivent pour faire de la place).
    Ca sera tout aussi rapide voire plus rapide qu'un tri à posteriori.
    Sinon une simple recherche t'amènera plein d'algorithmes de tris.
    eric
    Sauf que mes valeurs, dans mon programme, je ne les prends pas comme je l'ai présenté. Je reprends directement dans des cellules que j'ai dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 1 To 2
          For j = 1 To 8
                 jeu(i, j) = tableau.ListColumns(j & ".jeu").Range(index + i)
          Next
    Next

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par coco1397 Voir le message
    J'aimerais trier du petit au plus grand les valeurs dans la deuxième dimensions.
    En attendant un exemple clair et le code complet générant la variable source (edit : vu le code depuis),
    s'il s'agit de juste lister les valeurs triées de la deuxième dimension (colonne)
    cela devrait être déjà possible avec une seule ligne de code via une formule d'Excel …

    Sinon en plus simple copier les données source dans une feuille puis les trier via Excel et ce, même en VBA !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut
    Je vous explique:
    - J'ai un tableau sur une feuille excel. Dans ce tableau contient des résultats et cela fera un classement.
    - Si dans ce classement deux joueurs ont le même total de points après plusieurs parties, le programme doit aller chercher le plus petit score des deux joueurs
    - Si le plus petit score est le même, le programme doit aller chercher le 2ème plus petit, et ainsi de suite...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For Each table_r In TotalFairPlay.ListRows
     
            If TotalFairPlay.ListColumns("Total").Range(table_r.Index + 1) = TotalFairPlay.ListColumns("Total").Range(table_r.Index + 2) Then
     
                Dim Spiel(1 To 2, 1 To 8) As Integer
     
                For i = 1 To 2
                    For j = 1 To 8
                        Spiel(i, j) = TotalFairPlay.ListColumns(j & ". Spiel").Range(table_r.Index + i)
                    Next
                Next
     
            End If
        Next table_r

  6. #6
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut
    J'ai finalement trouver grâce à ce lien: https://www.developpez.net/forums/d8...iable-tableau/

    J'ai utilisé ceci pour trier et cela fonctionne très :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    For x = 1 To 2
                    For i = 1 To 8
                        For j = i To 8
                            If Spiel(x, i) > Spiel(x, j) Then
                                temp = Spiel(x, j)
                                Spiel(x, j) = Spiel(x, i)
                                Spiel(x, i) = temp
                            End If
                        Next j
                    Next i
                Next x
    Merci en tout cas pour votre aide

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    ok ca fonctionne mais il faudrait que tu explique comment?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For i = 1 To 8
                        For j = i To 8
                            If Spiel(x, i) > Spiel(x, j) Then
    est tu sur que tout est bien trié et que le premier n'est pas zapé par la conception meme de tes boucles imbriquées

    en ce qui me concerne je vois au premier tour de i qu'il est egal a j de ce fait le 1er spiel(x,i) est egal a spiel(x,j) car en fait tu teste lememe element du tableau

    je crois meme que ca va plus loin que ca quand j est = à i

    d'autres confirmeront ou infirmeront

    pour utilsiser ce procédé il faut jumper d'uncrans des le depart

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for j = 1 to 9
       for i = j+1 to 10
    '.......
       next
    next
    et on compare le precedent de j
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Macro Plus petit et plus grand que
    Par milyti dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 29/12/2016, 19h04
  2. [PowerShell] Dédoublonnage tableau en gardant les plus grandes valeurs
    Par arnaudperfect dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 18/03/2016, 12h50
  3. [XL-2003] Trier du plus petit au plus grand sans doublon
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/08/2011, 23h03
  4. Réponses: 3
    Dernier message: 04/01/2011, 15h05
  5. Tableau un "petit peu" trop grand
    Par lock42 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 8
    Dernier message: 07/06/2007, 17h22

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