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

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
    96.9 KB · Affichages: 41

jean123

XLDnaute Occasionnel
super ça marche parfaitement (et rapide en plus) un grand merci j'aurais un dernier petit truc a te demander
papou-net m'a fait une macro qui marche très bien et je l'en remercie mais qui a un temps d’exécution relativement long (4 min en moyenne)
pourrais tu y jeter un œil
Code:
Sub test() 
With Feuil1
  .Range("J:K").ClearContents
  lg = 1
  For Each Cel In .Columns(1).SpecialCells(xlCellTypeConstants)
    If Cel <> Cel.Offset(1, 0) And .Columns(10).Find(Cel, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
      .Range("J" & lg) = Cel
      lg = lg + 1
    End If
  Next
  For Each Cel In .Columns(1).SpecialCells(xlCellTypeConstants)
    Set dte = .Columns(10).Find(Cel, LookIn:=xlValues, LookAt:=xlWhole)
    If Not dte Is Nothing Then
      If Cel.Offset(, 1) <> "" Then dte.Offset(, 1) = dte.Offset(, 1) + 1
    End If
  Next
End With
End Sub

un gros merci a toi
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

Il ne faut pas s'étonner de la longueur de la procédure lorsque l'on a 50.000 lignes à traiter.
Il y a sans doute une solution qui passe par l'utilisation d'un dico mais ça je ne sais pas le faire

À+
Philippe
 

Papou-net

XLDnaute Barbatruc
Bonjour à tous,

Voici ma version initiale modifiée, avec utilisation d'un dictionary.

A vérifier si la rapidité est satisfaisante sur 50000 lignes?

Cordialement.
 

Pièces jointes

  • Copie 01 de Exemple Jean123.xlsm
    20.2 KB · Affichages: 45

pierrejean

XLDnaute Barbatruc
Bonjour jean123
Salut Papou-net

Je n'ai peur-etre pas tout compris mais je crois que ceci serait plus simple (fichier de Papou-net)
A tester:
Code:
Sub recap1()
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 = 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
 

Papou-net

XLDnaute Barbatruc
RE

Bonsoir Jean123, Philippe, pierrejean,

Ton code paraît effectivement plus simple et fonctionne parfaitement dans l'état actuel du fichier. Mais, si l'on ajoute des dates dans la colonne A, l'affichage ne se fait pas ou avec des erreurs.

Cordialement.
 

pierrejean

XLDnaute Barbatruc
Re

Il y avait effectivement un problème (la classique inversion des jours et mois)
Cette version devrait être meilleure
Il reste à la jauger au point de vue vitesse d’exécution
 

Pièces jointes

  • Copie 01 de Exemple Jean123.xlsm
    21.7 KB · Affichages: 43

jean123

XLDnaute Occasionnel
désolé pour la réponse tardive
super ça marche nickel
par contre j'ai un petit souci qui vient de mes données:
les dates que j'ai en colonne A certaine sont au format date et d'autre format texte je pense (il faut que je clic 2 fois dans la cellule pour que la date soit au format date )
j'ai essayé plein de chose mais en vain je ne vois pas comment toutes les passer en date si ce n'est de cliquer cellule par cellule
du coup la macro bloque sur ça aussi pfff
là je bloque !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…