XL 2010 compter masculin feminin

jean123

XLDnaute Occasionnel
bonjour à tous, j'ai un tableau de 50 000 lignes environ et qui grossie au fur et à mesure

dans ce tableau j'ai des dates colonne A et une colonne (D) sexe "m" et "f"

j'aimerais si possible en vba pouvoir compter le nombre de "m" pour chaque date et le nombre de "f" pour chaque date

un grand merci pour votre aide
 

Pièces jointes

  • mf.JPG
    mf.JPG
    96.9 KB · Affichages: 40

pierrejean

XLDnaute Barbatruc
Re
Salut Papou-net

A tester:
Code:
Sub recap1()
Feuil1.Columns("D:E").ClearContents
Set monDico = CreateObject("Scripting.Dictionary")
tablo = Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
  x = CDbl(CDate(tablo(n, 1)))
  If tablo(n, 2) <> "" Then monDico(x) = monDico(x) + 1
Next
a = monDico.keys
b = monDico.items
Range("D1").Resize(UBound(a) + 1) = Application.Transpose(a)
Range("E1").Resize(UBound(b) + 1) = Application.Transpose(b)

End Sub
 

jean123

XLDnaute Occasionnel
en fait les cellule en jaune n'apparaissent pas si la valeur est 0 seul les cellules ou pour la date la valeur est supérieur a zéro apparaissent en résultat dans les colonnes D et E
 

Pièces jointes

  • 123456.JPG
    123456.JPG
    41.3 KB · Affichages: 34

Papou-net

XLDnaute Barbatruc
Bonsoir jean123,
Salut pierrejean,

Il suffit peut-être de modifier la ligne comme ceci:

Sub Recap()
Dim monDico As Object
Dim c As Range, Cle As Integer
Feuil1.Columns("D:E").ClearContents
Set monDico = CreateObject("Scripting.Dictionary")
With Feuil1
For Each c In .Columns(1).SpecialCells(xlCellTypeConstants)
If Not monDico.exists(c.Value) Then monDico.Add c.Value, CLng(c.Value)
Next c
.Range("D1").Resize(monDico.Count, 1) = Application.Transpose(monDico.items)
For Each c In .Columns(4).SpecialCells(xlCellTypeConstants)
i = 0
For Each c1 In .Columns().SpecialCells(xlCellTypeConstants)
If c1 = c And c1.Offset(, 1) <> "" Then i = i + 1
Next
c.Offset(, 1) = i
Next
End With
Set monDico = Nothing
End Sub
Cordialement.
 

pierrejean

XLDnaute Barbatruc
Re

Salut Papou-net

Code:
Sub recap2()
Feuil1.Columns("D:E").ClearContents
Set monDico = CreateObject("Scripting.Dictionary")
tablo = Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
 If tablo(n, 1) <> "" Then
     x = CDbl(CDate(tablo(n, 1)))
     If tablo(n, 2) <> "" Then
         monDico(x) = monDico(x) + 1
     Else
         monDico(x) = 0
     End If
  End If
Next
a = monDico.keys
b = monDico.items
Range("D1").Resize(UBound(a) + 1) = Application.Transpose(a)
Range("E1").Resize(UBound(b) + 1) = Application.Transpose(b)
End Sub
 

jean123

XLDnaute Occasionnel
un gros merci a toi pierrejean ça marche nickel
j'aurai une toute dernière demande dans le même principe mais a la différence je voudrais faire la somme des valeurs au lieux de de compter les valeurs
et sur une autre macro pour chaque date en colonne I de la feuille 1 je souhaiterai copier et coller en feuille 2 a partir de la colonne L les données ce trouvant de la colonne J a V de la feuille 1 associé au date correspondante sur la feuille 2
 

Pièces jointes

  • RECAP.xlsx
    10.6 KB · Affichages: 29

jean123

XLDnaute Occasionnel
c'est presque ça ;-)
en gros sur une première macro les somme que tu reporte en feuille 2 il faudrait quelle soit en feuille 1

sur la feuille 2 j'ai une liste de date en colonne A l'idée serait qu'avec une macro indépendamment du calcule de somme je puisse copier les données que j'ai en feuille 1 a partir de la colonne I et les rattacher au date de la colonne A de la feuille 2 (qui ne sont pas forcement dans le même ordre) il y a deux macro dissocié
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 355
Membres
102 874
dernier inscrit
Petro2611