Trier des feuilles excel selon un résultat.

Résolu
adsens Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
adsens Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
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

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

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

    Lien modifié


    Cdlmnt
    1
    1. adsens Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      @ 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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. adsens Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      Parfait.
      Un grand Merci @ccm81.
      0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
    1. adsens Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci @ThauTheme.
      J'ai déjà utilisé la macro de ccm81 qui fonctionne bien aussi.
      Très cordialement.
      0