Trier des feuilles excel selon un résultat.

Résolu/Fermé
adsens Messages postés 12 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 19 avril 2017 - 24 nov. 2014 à 14:15
adsens Messages postés 12 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 19 avril 2017 - 25 nov. 2014 à 14:01
Bonjour à tous,

J'ai un classeur excel de plusieurs feuilles avec des données :
Feuil1 : Cellule A6 [contient un résultat de calcul (exemple: 2000)] .
Feuil2 : Cellule A6 [contient un résultat de calcul (exemple: 3000)] .
Feuil3 : Cellule A6 [contient un résultat de calcul (exemple: 4000)] .
et ainsi de suite pour des dizaines de feuilles.
Et je veux faire un triage décroissant des feuilles selon le résultat .

J'espère que tout est claire.
Merci d'avance
A voir également:

3 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 24/11/2014 à 17:59
Bonjour

Un essai via vba
https://www.cjoint.com/?3KysfVPcL7k

Lien modifié


Cdlmnt
1
adsens Messages postés 12 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 19 avril 2017
24 nov. 2014 à 18:11
@ ccm81,

Merci énormément, ça marche à merveille. Merci encore :)

Mais si c'est possible d'inverser le tri de "croissant" à "décroissant" !!!
et un grand merci d'avance @ccm81.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 24/11/2014 à 18:20
c'est ce qui est fait dans le lien modifié (j'avais lu un peu vite la question)
en fait pas grand chose à modifier
Call TriSel(tv, 1)
For nuf = nbf To 1 Step -1
Sheets(tv(nuf, 2)).Move after:=Sheets(nbf)
Next nuf

si c'est ok, penses à mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne soirée
1
adsens Messages postés 12 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 19 avril 2017
24 nov. 2014 à 18:30
Parfait.
Un grand Merci @ccm81.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
24 nov. 2014 à 19:16
Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :
Option Base 1

Sub Macro2()
Dim NO As Byte 'déclare la variable NO (Nombre d'Onglets)
Dim I As Byte 'déclare la variable I (Incrément)
Dim TOS() 'déclare la variable TOS (Tableau des Onglets)
Dim J As Byte 'déclare la variable J (incrément)

NO = Sheets.Count 'définit le nombre d'onglets NO
ReDim TOS(NO, 2) 'redimensionne le tableau des onglets TOS (NO lignes, 2 colonnes)
For I = 1 To NO 'boucle sur tous les onglets
    TOS(I, 1) = I 'définit la valeur dans la colonne 1 du tableau TOS (le numéro de l'onglet)
    TOS(I, 2) = Sheets(I).Range("A6").Value 'définit la valeur dans la colonne 2 du tableau TOS (la valeur de A6 de l'onglet)
Next 'prochain onglet de la boucle
J = 1 'initialise la variable J
For I = 1 To UBound(TOS, 1) 'boucle sur toutes les lignes du tableau TOS
    'condition : si la valeur de la cellule A6 de l'onglet est la Jième plus petite valeur de la deuxième colonne du tableau TOS
    If TOS(I, 2) = Application.WorksheetFunction.Small(Application.Index(TOS, , 2), J) Then
        'place l'onglet devant l'onglet numéro J, incrémente J
        Sheets(TOS(I, 1)).Move before:=Sheets(J): J = J + 1
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

1
adsens Messages postés 12 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 19 avril 2017
25 nov. 2014 à 14:01
Merci @ThauTheme.
J'ai déjà utilisé la macro de ccm81 qui fonctionne bien aussi.
Très cordialement.
0