Problème avec le fonction rang (groupe)

Résolu
cjik1 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
bonsoir;
dans Excel; j'ai 4 feuilles:
dans la feuil1 A5=15
feuil2: A5=11
Feuil3: A5= 8
feuil4: A5= 18
Prière, aidez-moi à trouver la fonction rang permettant de classer ces feuilles; c''est-à-dire que le rang doit être trouvé par rapport au groupe de feuil.
merci.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    En mettant cette formule sur la ligne 1 d'une feuille et en la tirant sur 4 lignes tu vas obtenir tes valeurs triées du plus grand au plus petit et en remplaçant GRANDE par PETITE tu l'as dans l'autre sens.
    =GRANDE.VALEUR(Feuil4:Feuil1!$A$5;LIGNE())

    Maintenant, je ne sais pas si c'est ce que tu espérais...
    0
  2. Raymond PENTIER Messages postés 58226 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    Salut.
    Ce que tu veux est bizarre et très particulier. Je crains que seule une macro puisse y parvenir.
    Mais j'ai peut-être mal compris ! Que veux-tu dire exactement par "c'est-à-dire que le rang doit être trouvé par rapport au groupe de feuil" ?
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    cette macro range les feuilles d'un classeur (maxi feuilles=255)dans l'ordre décroissant de la valeur en A5 de chaque feuille

    Option Explicit
    Sub ranger()
    Dim tablo()
    Dim nbre As Byte, cptr As Byte, i As Byte, j As Byte, k As Byte
    Dim tmp0 As Double, tmp1 As String
    
    ' nombre de feuilles
    nbre = ThisWorkbook.Sheets.Count
    
    'construit un tableau 2 dimension au nombre de feuilles
    ReDim tablo(nbre - 1, 1)
    
    'remplit le tableau avec le nom des onglets et la valeur en A5
    Do Until cptr = nbre
        tablo(cptr, 0) = Sheets(cptr + 1).Range("A5").Value
        tablo(cptr, 1) = Sheets(cptr + 1).Name
        cptr = cptr + 1
    Loop
    
    'range le tableau dans l'ordre croissant de A5
    For i = 0 To nbre
            j = i
            For k = j + 1 To nbre - 1
                If tablo(k, 0) <= tablo(j, 0) Then j = k
            Next k
        If i <> j Then
            tmp0 = tablo(j, 0)
            tmp1 = tablo(j, 1)
            tablo(j, 0) = tablo(i, 0)
            tablo(j, 1) = tablo(i, 1)
            tablo(i, 0) = tmp0
            tablo(i, 1) = tmp1
        End If
      Next i
      
      'fige défilement de l'écran
      Application.ScreenUpdating = False
      'range les feuilles dans l'ordre décroissant de A5
     cptr = 0
     For cptr = 0 To UBound(tablo)
        Sheets(tablo(cptr, 1)).Move before:=Sheets(1)
    Next
      
    End Sub

    0