VBA: Scriting Dictionary Compter uniquement les textes

  • Initiateur de la discussion Initiateur de la discussion MJ13
  • 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 !

MJ13

XLDnaute Barbatruc
Bonjour à tous

J'ai un code pour dénombrer et compter le nombre d'éléments dans une colonne issu d'un code de JB 🙂. Mais je voudrais compter que les textes et pas les valeurs. Et là, je pêche 😕.

Merci d'avance 🙂.

Voici le code:

Code:
Sub CompteItems()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
  mondico(c.Value) = mondico(c.Value) + 1
  Next c
  [J2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [K2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
  [J1].Sort Key1:=[K2], Order1:=xlDescending, Header:=xlYes
  Set mondico = Nothing
End Sub
 
Re : VBA: Scriting Dictionary Compter uniquement les textes

Bonjour à tous______________________________________EDITION: Bonjour Paf, leti


MJ13
Tu as essayé avec SpecialCells ou If Not IsNumeric?

Avec If Not IsNumeic
Code:
Sub CompteItemsI()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
  If Not IsNumeric(c) Then
  mondico(c.Value) = mondico(c.Value) + 1
  End If
  Next c
  [J2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [K2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
  [J1].Sort Key1:=[K2], Order1:=xlDescending, Header:=xlYes
  Set mondico = Nothing
End Sub

Avec SpecialCells
Code:
Sub CompteItemsII()
  Set mondico = CreateObject("Scripting.Dictionary")
  On Error Resume Next
  For Each c In Range("a2", [a65000].End(xlUp)).SpecialCells(xlCellTypeConstants, 2)
  mondico(c.Value) = mondico(c.Value) + 1
  Next c
  [J2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [K2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
  [J1].Sort Key1:=[K2], Order1:=xlDescending, Header:=xlYes
  Set mondico = Nothing
End Sub
 
Dernière édition:
Re : VBA: Scriting Dictionary Compter uniquement les textes

bonjour tous 🙂🙂🙂🙂

en passant par un tablo un peu plus rapide pour le fun

Code:
Dim t(), i As Long, m As Object
  Set m = CreateObject("Scripting.Dictionary")
  t = Range("a2:a" & Cells(Rows.Count, 1).End(3).Row)
  For i = 1 To UBound(t)
  If Not IsNumeric(t(i, 1)) Then m(t(i, 1)) = m(t(i, 1)) + 1
  Next i
  [j2].Resize(m.Count) = Application.Transpose(m.keys)
  [k2].Resize(m.Count) = Application.Transpose(m.Items)
  Set m = Nothing
 
Re : VBA: Scriting Dictionary Compter uniquement les textes

Bonjour Jean-Marie, Paf, Laetitia

Merci beaucoup pour vos solutions qui fonctionnent très bien. En fait je testai, mondico(c.Value) 😱 et j'ai compris que cela ne pouvait pas fonctionner en voyant vos codes, erreur de débutant 😱.
 
- 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
12
Affichages
552
Retour