Classement + affichage 3 valeurs Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
fizik
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 2 mars 2017
Version d'Excel : Google Sheets

Message par fizik » 18 mai 2019, 20:47

Bonjour, je n'ai pas su nommer correctement ma question.

J'ai actuellement un tableur avec des personnes, leur pays et le nombre de points qu'ils ont ramené.

J'aimerais faire un classement de cela, avec dont l'addition des points par personne et dans ce classement marquer la personne, son pays et son nombre de points ( trié par nombre de points ).

Le problème est que je bloque là-dessus depuis de longues minutes déjà.

merci d'avance pour l'aide que vous m'apporterez.
Classeur1.xlsx
(9.4 Kio) Téléchargé 7 fois
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 18 mai 2019, 21:44

Bonjour

Problème classique en algorithmique ! Donc cela donnerait en algorithmique pure et basique :
Sub Tri()
Dim tabNoms()
Dim tabTri()
Dim ligFin
Dim cptLig, nbrTri
Dim ligNom

    ligFin = Cells(Rows.Count, 1).End(xlUp).Row
    tabNoms = Range(Cells(1, 1), Cells(ligFin, 3))
    For cptLig = 1 To UBound(tabNoms, 1)
        ligNom = TrouveNom(tabTri, tabNoms(cptLig, 1))
        If ligNom > 0 Then
            tabTri(3, ligNom) = tabTri(3, ligNom) + tabNoms(cptLig, 3)
        Else
            tabTri = InsereNom(tabTri, tabNoms, cptLig)
        End If
    Next
    
    tabTri = TriPoints(tabTri)
    
    Cells(2, 5).Resize(UBound(tabTri, 2), UBound(tabTri, 1)) = WorksheetFunction.Transpose(tabTri)
    
End Sub

Function TriPoints(tabBrut)
Dim iIndice, jIndice
Dim zonSwap
Dim cptCol

    For iIndice = 1 To UBound(tabBrut, 2) - 1
        For jIndice = iIndice To UBound(tabBrut, 2)
            If tabBrut(3, iIndice) < tabBrut(3, jIndice) Then
                For cptCol = 1 To 3
                    zonSwap = tabBrut(cptCol, iIndice)
                    tabBrut(cptCol, iIndice) = tabBrut(cptCol, jIndice)
                    tabBrut(cptCol, jIndice) = zonSwap
                Next
            End If
        Next
    Next
    
    TriPoints = tabBrut
    
End Function

Function InsereNom(tabTrier, tabNoms, ligAct)
Dim cptCol

    On Error GoTo errInsereNom
    ReDim Preserve tabTrier(1 To UBound(tabTrier, 1), 1 To UBound(tabTrier, 2) + 1)
    On Error GoTo 0
    
    For cptCol = 1 To UBound(tabNoms, 2)
        tabTrier(cptCol, UBound(tabTrier, 2)) = tabNoms(ligAct, cptCol)
    Next
    
    InsereNom = tabTrier
    
    Exit Function
    
errInsereNom:
    ReDim tabTrier(1 To 3, 1 To 1)
    Resume Next
    
End Function

Function TrouveNom(tabTrier, nomCherche)
Dim trvNom As Boolean
Dim cptLig
Dim nbrLig

    trvNom = False
    cptLig = 1
    On Error GoTo errTrouveNom
    nbrLig = UBound(tabTrier, 2)
    On Error GoTo 0
    
    While Not (cptLig > UBound(tabTrier, 2)) And Not trvNom
        If (tabTrier(1, cptLig) = nomCherche) Then
            trvNom = True
        Else
            cptLig = cptLig + 1
        End If
    Wend
    
    TrouveNom = IIf(trvNom, cptLig, 0)
    
    Exit Function
    
errTrouveNom:
    TrouveNom = 0
    On Error GoTo 0
    
End Function
Mais je viens de voir que tu travailles sur GoogleSheet, je sais pas si VBA fonctionne de manière identique...

PS/ Le code n'est pas commenté, mais je pense qu'il se comprend de lui même... Au besoin je peux le commenter !
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'038
Appréciations reçues : 614
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 19 mai 2019, 07:02

Bonjour,
Une proposition à étudier.
Les données sont sous forme de tableau structuré. On crée un TCD (Tableau croisé dynamique).
On somme le nombre de points en fonction du Nom et du Pays.
On effectue ensuite un tri descendant de la somme des points !... ;;)
A te relire.
Cdlt.
fizik.xlsx
(14.78 Kio) Téléchargé 3 fois
snip_20190519065941.png
snip_20190519065941.png (9.4 Kio) Vu 76 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
f
fizik
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 2 mars 2017
Version d'Excel : Google Sheets

Message par fizik » 19 mai 2019, 11:29

Merci bien,

J'ai essayé la deuxième proposition qui fonctionne à merveille.

Savez-vous si il est possible de faire cela sans TCD et sans VBA ? Seulement avec des fonctions natives d'Excel ?

Merci
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 19 mai 2019, 14:04

Bonjour

Oui tout a fait. C'est possible avec une table intermédiaire et pas mal de formules et cela pourrait donner cela :
Explic 20190519 01.JPG
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 19 mai 2019, 14:50

(..)

Avec les explications de mise en place :
Explic 20190519 02.JPG
L'utilisation des formules nommées permet de limiter la taille des formules suivantes (et par la même occasion, d'éviter des erreurs de frappe)

Explic 20190519 03.JPG
Explic 20190519 03.JPG (40.23 Kio) Vu 61 fois
Le fait que les libellés des colonnes soient identiques (tableau intermédiaire et tableau final) permet de changer l'ordre des colonnes dans le tableau final.
Explic 20190519 04.JPG
Explic 20190519 05.JPG
Le tableau intermédiaire peut être masqué, ou même "expatrié" sur un autre onglet pour éviter les affichages parasites
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
f
fizik
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 2 mars 2017
Version d'Excel : Google Sheets

Message par fizik » 19 mai 2019, 18:16

Alors là excellent !

Merci beaucoup pour ton temps et ta patience, ça marche niquel !

Encore merci
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 19 mai 2019, 18:24

Bonjour

De rien !
Mais j'apprécie néanmoins ! :)
Heureux d'avoir répondu à tes prédicats de départ, et que la transcription de mes explications fonctionnent !
Au plaisir !
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 19 mai 2019, 18:38

Bonjour

Je reviens sur mes figures pour apporter le point suivant :
Dans mes formules le tableau final (orange) est figé au 4 lignes (actuelles) du tableau intermédiaire (vert) !
Mais tu peux en appliquant le principe de formules nommées (celles du tableau bleu) faire en sorte que les formules soient auto-adaptatives ! Si tu as bien compris le principe de fonctionnement de la fonction DECALER que j'ai utilisé, cela ne devrait pas te poser de problème...
Mais n'hésite pas à revenir au cas où !!
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
G
Gli73
Membre fidèle
Membre fidèle
Messages : 294
Appréciations reçues : 37
Inscrit le : 12 avril 2019
Version d'Excel : PC 2013
Contact :

Message par Gli73 » 19 mai 2019, 18:56

(..)
Dans le même principe tu peux aussi obtenir le classement "pays"
Explic 20190519 06.JPG
Explic 20190519 06.JPG (25.81 Kio) Vu 47 fois
avec toujours tableau intermédiaire (vert) et final (orange)

Je te laisse adapter ? ;;)
1 membre du forum aime ce message.
Excelement Vôtre
Cogito ergo Excel
Per espera ad Excel

Développeur Indépendant sur Excel et 40 ans d'expérience informatique, je peux vous aider à apporter une touche "pro" à vos réalisations !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message