Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Compter et classer ordre décroissant éléments dictionary

  • Initiateur de la discussion Initiateur de la discussion erics83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

erics83

XLDnaute Impliqué
Bonjour,

A nouveau inspiré par les excellents tutos de JB, je cherche à compter et classer par ordre décroissant. J'ai pris un classeur test de JB où le but est de créer une liste à partir des éléments d'une colonne séparés par ";", une liste se crée et je cherche à compter le nombre de fois où est "pépé", par exemple et ensuite de classer la liste des sommes par ordre décroissant....

J'ai essayé avec
VB:
 Application.Sum(d1.items)
mais cela ne fonctionne pas....

Merci pour votre aide
 

Pièces jointes

Dernière édition:
Merci Lolote83,

Effectivement c'est une piste, mais comme je souhaitais un classement décroissant...et éviter une formule matricielle (qui est très bien au demeurant, mais je '"entraine" avec les Dictionary...).

Merci pour votre aide,
 
Bonsoir,
VB:
Sub test()
Const adChar = 129, adInteger = 3
Dim Rs As Object: Set Rs = CreateObject("ADODB.Recordset")
Rs.Fields.Append "Mots-Clefs", adChar, 50
Rs.Fields.Append "NB", adInteger
Rs.Open
 With Rs
For Each c In Range("b2:b" & [b65000].End(xlUp).Row)
    a = Split(c.Value, ";")
 
    For Each m In a
        .Filter = "[Mots-Clefs]='" & Trim(m) & "'"
        If .EOF Then .AddNew
        ![Mots-Clefs] = Trim(m)
        !NB = !NB + 1
        .Update
        .MoveFirst
        Next m
  
  Next c
  .Filter = "": .MoveFirst: .Sort = "NB desc, [Mots-Clefs] ASC"
End With
[E2].CopyFromRecordset Rs
Rs.Close: Set Rs = Nothing
End Sub
 
Dernière édition:
Bonsoir,

Selon le principe Boisgontier

VB:
Sub transforme()
  Set d1 = CreateObject("scripting.dictionary")
  For Each c In Range("b2:b" & [b65000].End(xlUp).Row)
    a = Split(c.Value, ";")
    For Each m In a: d1(Trim(m)) = d1(Trim(m)) + 1: Next m
  Next c
  [E2].CurrentRegion.Offset(1).ClearContents: [F14].ClearContents
  [E2].Resize(d1.Count) = Application.Transpose(d1.Keys)
  [F2].Resize(d1.Count) = Application.Transpose(d1.Items)
  [E2].CurrentRegion.Offset(, 1).Sort key1:=[F2], Order1:=2, Header:=xlYes
  [F14] = Application.Sum(d1.Items)
End Sub
 
Dernière édition:
Ici la clé est Mots_Clefs et NB l'item c'est sur NB qu'on trie de façon décroissante! ce que SortedList et ArrayList ne font pas
Mots-ClefsNB
arbre
10​
cloture
10​
fleurs
10​
herbe
10​
Maman
5​
Mamie
5​
Papa
5​
Pépé
5​
chaise
3​
nape
3​
table
3​
 
Dernière édition:
re
Bonjour robert
ben un petit tri bulbule alors comme ça vite fait
VBA/Formule matricielle


VB:
Sub test()
    x = in_order_TableauBul([A1:B11].Value, 2)
    [D1].Resize(UBound(x), UBound(x, 2)) = x
End Sub


Function in_order_TableauBul(tabl, col, Optional sens = 0)
    Dim i#, e#, x#
    If TypeName(tabl) = "Range" Then tabl = tabl.Value
    ReDim temp(UBound(tabl, 2))
    For i = 1 To UBound(tabl)
        For e = i + 1 To UBound(tabl)
            Select Case sens
            Case 0
                If tabl(e, col) > tabl(i, col) Then
                    For x = 1 To UBound(tabl, 2): temp(x) = tabl(i, x): tabl(i, x) = tabl(e, x): tabl(e, x) = temp(x): Next
                End If
            Case 1
                If tabl(e, col) < tabl(i, col) Then
                    For x = 1 To UBound(tabl, 2): temp(x) = tabl(i, x): tabl(i, x) = tabl(e, x): tabl(e, x) = temp(x): Next
                End If
            End Select
        Next
    Next
    in_order_TableauBul = tabl
End Function


on peu même des l'ors faire une fonction qui reprendrait le tableau avec les doublons du post 1 et faire tout d'un coup

il y a aussi ma fonction quick sort sur tableau 2 Dim (dans les deux sens ) sur colonne X aussi eventuellement pour les grands tableaux
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
651
Réponses
3
Affichages
438
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…