VBA: Scriting Dictionary Compter uniquement les textes

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 :confused:.

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
 

Staple1600

XLDnaute Barbatruc
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:

laetitia90

XLDnaute Barbatruc
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
 

MJ13

XLDnaute Barbatruc
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) :eek: et j'ai compris que cela ne pouvait pas fonctionner en voyant vos codes, erreur de débutant :eek:.
 

Discussions similaires

Réponses
12
Affichages
252

Statistiques des forums

Discussions
312 299
Messages
2 086 990
Membres
103 420
dernier inscrit
eric.wallet46