Trier par groupe en fonction des valeurs

skydry20

XLDnaute Nouveau
Bonjour,

Un petit pb s'impose à moi :

Je souaiterais qu'en fonction de la valeur des resultats de la colonne "G" de mon onglet "Resultat", les noms correspondants en colonne "B" se classe par groupe dans l'onglet "Groupe"

Pourriez- vous m'aider s'il vous plaît ?

skydry20

Le fichier est ci-joint
 

Pièces jointes

  • test1.xls
    35.5 KB · Affichages: 47
  • test1.xls
    35.5 KB · Affichages: 43
  • test1.xls
    35.5 KB · Affichages: 45

skydry20

XLDnaute Nouveau
Re : Trier par groupe en fonction des valeurs

Pour détailler :

je souhaiterais que :
si G6:G300 est entre 0 et 25 alors B6:B300 se classe en "!Groupe" B3:B300.
si G6:G300 est entre 25 et 50 alors B6:B300 se classe en "!Groupe" C3:C300.
si G6:G300 est entre 50 et 75 alors B6:B300 se classe en "!Groupe" D3:D300.
et si G6:G300 est entre 75 et 100 alors B6:B300 se classe en "!Groupe" E3:E300.

Quelqu'un aurait-il une idée, s'il vous plaît ?
 

mromain

XLDnaute Barbatruc
Re : Trier par groupe en fonction des valeurs

bonjour skydry20,

voici une solution en macro :
Code:
Sub test()
Dim tabValeurs() As Variant, nbLignesTab As Long, nbLignes As Long, i As Long
Dim i1 As Long, i2 As Long, i3 As Long, i4 As Long
    
    With ThisWorkbook.Sheets("Resultat")
        nbLignesTab = WorksheetFunction.Max( _
            Evaluate("SumProduct((" & .Range("G6:G300").Address & ">=0)*(" & .Range("G6:G300").Address & "<=25)*1)"), _
            Evaluate("SumProduct((" & .Range("G6:G300").Address & ">25)*(" & .Range("G6:G300").Address & "<=50)*1)"), _
            Evaluate("SumProduct((" & .Range("G6:G300").Address & ">50)*(" & .Range("G6:G300").Address & "<=75)*1)"), _
            Evaluate("SumProduct((" & .Range("G6:G300").Address & ">75)*(" & .Range("G6:G300").Address & "<=100)*1)"))
        
        ReDim tabValeurs(1 To nbLignesTab, 1 To 4)
        
        nbLignes = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = 6 To nbLignes
            If .Range("G" & i).Value >= 0 And .Range("G" & i).Value <= 25 Then
                i1 = i1 + 1
                tabValeurs(i1, 1) = .Range("B" & i).Value
            ElseIf .Range("G" & i).Value > 25 And .Range("G" & i).Value <= 50 Then
                i2 = i2 + 1
                tabValeurs(i2, 2) = .Range("B" & i).Value
            ElseIf .Range("G" & i).Value > 50 And .Range("G" & i).Value <= 75 Then
                i3 = i3 + 1
                tabValeurs(i3, 3) = .Range("B" & i).Value
            ElseIf .Range("G" & i).Value > 75 And .Range("G" & i).Value <= 100 Then
                i4 = i4 + 1
                tabValeurs(i4, 4) = .Range("B" & i).Value
            End If
        Next i
    End With

    ThisWorkbook.Sheets("Groupe").Range("B3").Resize(UBound(tabValeurs, 1), UBound(tabValeurs, 2)).Value = tabValeurs

End Sub
a+
 

Jocelyn

XLDnaute Barbatruc
Re : Trier par groupe en fonction des valeurs

Bonjour le Forum,
Bonjour skydry20, mromain,

Pour le cas une solution par formule

Jocelyn
 

Pièces jointes

  • syl20k.xls
    13.5 KB · Affichages: 46
  • syl20k.xls
    13.5 KB · Affichages: 47
  • syl20k.xls
    13.5 KB · Affichages: 48

mromain

XLDnaute Barbatruc
Re : Trier par groupe en fonction des valeurs

re bonjour,
bonjour Jocelyn,

une autre solution (en formule aussi)
- saisir la formule suivante en B3 de la feuille "Groupe"
- la valider avec <Ctrl> + <Maj> + <Entrée>
- la tirer vers la droite et vers le bas
Code:
=SI(LIGNE()-2>SOMMEPROD((Resultat!$G$6:$G$205>SUBSTITUE(STXT(B$2;TROUVE("de";B$2)+3;2);" ";"")*1)*(Resultat!$G$6:$G$205<=STXT(B$2;TROUVE("à";B$2)+2;NBCAR(B$2)-TROUVE("à";B$2)-2)*1)*1);"";INDIRECT("Resultat!B"&PETITE.VALEUR(((Resultat!$G$6:$G$205>SUBSTITUE(STXT(B$2;TROUVE("de";B$2)+3;2);" ";"")*1)*(Resultat!$G$6:$G$205<=STXT(B$2;TROUVE("à";B$2)+2;NBCAR(B$2)-TROUVE("à";B$2)-2)*1)*LIGNE(Resultat!$G$6:$G$205));LIGNES(Resultat!$G$6:$G$205)-SOMMEPROD((Resultat!$G$6:$G$205>SUBSTITUE(STXT(B$2;TROUVE("de";B$2)+3;2);" ";"")*1)*(Resultat!$G$6:$G$205<=STXT(B$2;TROUVE("à";B$2)+2;NBCAR(B$2)-TROUVE("à";B$2)-2)*1)*1)+(LIGNE()-2))))

a+
 

skydry20

XLDnaute Nouveau
Re : Trier par groupe en fonction des valeurs

Merci à tous pour vos réponses nombreuses et variées !:)

En revanche, j'en suis vraiment à mes premiers balbutiement sur Excel et

- j'ai du mal à me servir des macros, meme si j'ai pu constater que ta version mromain fonctionne je n'arrive pas à garder la macro... donc une solution avec formule me séduit;

- Jocelyn je n'arrive pas à transposer la formule de ton fichier sur le mien;

- mromain, je travail sous une version EN d'Excel, peux-tu me renvoyer le fichier initiale avec ta Formule ? elle sera traduite automatiquement en EN quand je l'ouvrirais avec ma version...

Merci à vous !
 

Pièces jointes

  • test1.xls
    35.5 KB · Affichages: 31
  • test1.xls
    35.5 KB · Affichages: 33
  • test1.xls
    35.5 KB · Affichages: 33

Discussions similaires

Réponses
9
Affichages
544
Réponses
3
Affichages
437

Statistiques des forums

Discussions
312 390
Messages
2 087 951
Membres
103 683
dernier inscrit
Cescodelvar