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 en ordre décroissant les données d'un tableau [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut Trier en ordre décroissant les données d'un tableau
    Bonjour,

    j'aimerais savoir s'il y a une commande spécifique qui trie en ordre croissant les données (integer) d'une colonne d'un tableau?

    Pour l'instant, je fais 2 boucles et compare 1 a 1 les données et les classes dans un autre tableau mais je me demande s'il y a une façon plus direct et plus simple?

    Merci!

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    Ta question parait tellement basique que je me doute qu'elle cache une difficulté plus sérieuse car pour trier les données en ordre croissant ou décroissant, il suffit de se servir du bouton "Trier et Filtrer" présent sur le ruban "Accueil" (Excel 2007), au passage, il est toujours recommandé d'indiquer sa version d'Excel
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Bonjour,

    J'utilise excel 2010 et ma question concernait les lignes de code vba... Je débute de façon 100% autodidacte dans excel alors désolé si je parait "débutant".

    Après avoir posé ma question j'ai fait quelques recherches supplémentaires et toutes les réponses trouvées font à peu près la même chose que moi : des boucles For comparant les données du tableau...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    S'il s'agit de trier une plage de cellules d'excel par colonnes ou lignes, il n'y a aucune raison de passer par une boucle. La méthode Sort de l'objet Range fait cela très bien.
    Si tu veux aller plus loin voir cette contribution Procédure de tri - Excel 2003-2010 qui permet de multiples combinaisons.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    En fait, mon tri concerne les éléments d'un tableau 'virtuel'. Il n'est pas écrit dans une feuille de calcul. Je précise:

    J'ai un tableau de 20 lignes (1 colonne) en mémoire seulement (obtenu et calculé par une autre macro) contenant les ID de clients et ils peuvent se répéter. Mon but est d'obtenir le nombre de fois que chacun d'eux apparaissent dedans et de les trier par ordre de fréquence décroissante.. J'ai donc un 1er tableau contenant l'ensemble des ID, je les tri dans un autre tableau a 2 colonnes dont la 2e colonne possède leur fréquence respective et je fais un 3e tableau a 1 colonne contenant seulement les ID en ordre décroissant..

    Voila ce que j'essai de faire.. J'ai réussi a le faire avec des boucles etc mais ma question était s'il y avait une façon plus simple et direct d'obtenir le même résultat...?

    Merci beaucoup!

  6. #6
    Invité
    Invité(e)
    Par défaut Bonjour,
    moi je le faits en une boucle, hormis cela il n'existe pas de méthode de trie sur un tableau!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub TrieTable()
    Dim T(10) As Integer
    Dim a As Integer
    'assigne les valeur du tableau de 10 à 0
    For i = 0 To UBound(T)
        T(i) = UBound(T) - i
    Next
    'trie le tableau par ordre croissent!
    For i = 1 To UBound(T)
        If T(i - 1) > T(i) Then
            a = T(i)
            T(i) = T(i - 1)
            T(i - 1) = a
            i = i - 2
            If i < 0 Then i = 1
        End If
    Next
    Dernière modification par AlainTech ; 26/04/2014 à 14h55. Motif: Suppression de la citation inutile

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    ouais c'est bien ce que je pensais...

    MERCI infiniment de votre aide très précieuse!

  8. #8
    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,

    on peut utiliser une bibliothèque externe dans laquelle un tableau (classe d'une collection) est trié automatiquement
    au fur & à mesure; la réponse est dans le forum Macros et VBA Excel

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    1) Je suis encore nouveau ici et je ne maîtrise pas encore parfaitement votre site. Comment faire pour trouver "facilement" cette réponse dans le forum Macros et VBA puisqu'il y a 1096 pages au total? J'ai essayé de faire une recherche avec "bibliothèque externe" mais sans grand résultat.. Évidemment, je n'ai pas l'intention de lire toutes ses pages et ces discussions!

    2) Après avoir relu les réponses plus haut, j'ai réalisé qu'il serait surement beaucoup mieux d'écrire mon tableau dans une feuille de calcul et de créer une macro utilisant le bouton "Trier et Filtrer"... Étant des étapes intermédiaires et "inutiles" à l'utilisateur, je suis persuadé d'avoir la possibilité de rendre invisible ou inactivée cette feuille et donc "non-apparente" pour l'utilisateur... Je pense que c'est même une excellente idée! non?

  10. #10
    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

    Ce n'est pas une mauvaise idée, plus facile à appréhender pour un débutant;
    la performance dépendant aussi de la qualité du code …

    Pour l'invisibilité, suffit de désactiver le rafraîchissement de l'affichage en début de procédure via la propriété ScreenUpdating.

    Un peu de lecture dans la discussion Alimentation d'un tableau à 1 dimension et 5 colonnes

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Je viens tu de me faire traiter de debutant moi la...?

    Hahaha! Bin c'est pas totalement faux.. Haha!

    J'avais deja mon code vba faisant tout cela (voir au debut de la discussion) mais jessayais de savoir sil y avait une facon plus simple et plus directe..

    Sur ce, merci infiniment de votre aide et je trouve votre site vraiment TRES utile et extremement apprecier.. Merci encore gang!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2010, 09h07
  2. Réponses: 1
    Dernier message: 06/09/2009, 09h11
  3. [MySQL] Trier par ordre décroissant
    Par notour dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/08/2007, 09h06
  4. [Tableaux] Trier les données d'un tableau HTML
    Par mouchkar dans le forum Langage
    Réponses: 9
    Dernier message: 05/01/2007, 20h29
  5. Trier les données dans 1 tableau par ordre décroissant
    Par Blunet dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/11/2005, 09h56

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