Compter selon classes d'ages et sexe

serir

XLDnaute Junior
Bonjour tout le monde,

Je voulais calculer en VBA le nombre de ventes par: sexe, classes d'ages et sexe et classes d'ages à la fois.

Merci beaucoup pour votre aide
 

Pièces jointes

  • Nombre_de_ventes.xlsx
    65.1 KB · Affichages: 82
  • Nombre_de_ventes.xlsx
    65.1 KB · Affichages: 77

Chris401

XLDnaute Accro
Re : Compter selon classes d'ages et sexe

Bonsoir

Pour les formules "Féminin", vu que si le genre n'est pas M il ne peut être que MELLE OU MME, à la place de faire 2 Somme.si.ens, remplacer ="MELLE" par ="<>M"

Exemple pour "Féminin entre 15 et 35 ans"
Code:
=SOMME.SI.ENS(Donnees!$B:$B;Donnees!$A:$A;$A4;Donnees!$D:$D;"<>M";Donnees!$C:$C;">="&15;Donnees!$C:$C;"<="&35)
Cordialement
Chris
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Compter selon classes d'ages et sexe

Bonsour®
utiliser un tableau croisé dynamique avec groupements ...
Capture1.jpg
Capture2.jpg
 

Pièces jointes

  • Capture1.jpg
    Capture1.jpg
    35.9 KB · Affichages: 48
  • Capture2.jpg
    Capture2.jpg
    38.1 KB · Affichages: 39
  • Nombre_de_ventes.xlsx
    84.7 KB · Affichages: 65
  • Nombre_de_ventes.xlsx
    84.7 KB · Affichages: 64

BigDaddy154

XLDnaute Junior
Re : Compter selon classes d'ages et sexe

Bonsoir tout le monde,

effectivement je ne vois pas l’intérêt de faire se calcul en vba alors que les formules d'excel le font très bien mais si tel est ton souhait je te fournit le fichier.

Ps : ce code ne prend pas en compte les éventuels anges faisant partit de la feuille "Donnees". ;)

Cordialement.
 

Pièces jointes

  • Nombre_de_ventes.xlsm
    76.5 KB · Affichages: 60
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Compter selon classes d'ages et sexe

Bonsoir à tous,

Tout à fait d'accord pour la macro !

Néanmoins, j'ai apporté ma contribution pour cette fameuse macro !

La solution est dans la feuille 3 et elle peut aller au-delà de 19 lignes ( suivant la saisie de la feuille " donnée " !

bonne nuit !
 

Pièces jointes

  • Nombre_de_ventes-1.xlsm
    84.9 KB · Affichages: 71
Dernière édition:

job75

XLDnaute Barbatruc
Re : Compter selon classes d'ages et sexe

Bonjour serir, le forum,

En VBA si l'on veut une exécution rapide il faut utiliser des tableaux (matrices) :

Code:
Private Sub Worksheet_Activate()
Dim t, a(), d As Object, i&, sex As Byte, n&
t = Feuil1.[A1].CurrentRegion.Resize(, 4) 'Feuil1=CodeName de la feuille source
ReDim a(1 To UBound(t), 1 To 12)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
  If Not d.exists(t(i, 1)) Then
    d(t(i, 1)) = d.Count + 1 'élimine les doublons et repère la ligne
    a(d.Count, 1) = t(i, 1)
  End If
  sex = 0
  If UCase(t(i, 4)) = "M" Then sex = 1 Else _
    If UCase(t(i, 4)) = "MME" Or UCase(t(i, 4)) = "MELLE" Then sex = 2
  n = d(t(i, 1))
  If sex = 1 Then a(n, 2) = a(n, 2) + t(i, 2) Else _
    If sex = 2 Then a(n, 3) = a(n, 3) + t(i, 2)
  If t(i, 3) < 15 Then
    a(n, 4) = a(n, 4) + t(i, 2)
    If sex = 1 Then a(n, 7) = a(n, 7) + t(i, 2) Else _
      If sex = 2 Then a(n, 10) = a(n, 10) + t(i, 2)
  ElseIf t(i, 3) <= 35 Then
    a(n, 5) = a(n, 5) + t(i, 2)
    If sex = 1 Then a(n, 8) = a(n, 8) + t(i, 2) Else _
      If sex = 2 Then a(n, 11) = a(n, 11) + t(i, 2)
  Else
    a(n, 6) = a(n, 6) + t(i, 2)
    If sex = 1 Then a(n, 9) = a(n, 9) + t(i, 2) Else _
      If sex = 2 Then a(n, 12) = a(n, 12) + t(i, 2)
  End If
Next
'---restitution et mise en forme---
Application.ScreenUpdating = False
Range("A4:L" & Rows.Count).Delete xlUp 'RAZ
If d.Count Then
  With [A4].Resize(d.Count, 12)
    .Value = a
    .Sort .Columns(1), xlAscending, Header:=xlNo 'tri
    .Rows(d.Count + 1) = "=SUM(R[-" & .Rows.Count & "]C:R[-1]C)"
    .Cells(d.Count + 1, 1) = "Total"
    .Rows(d.Count + 1).Font.Bold = True 'gras
    .Rows(d.Count + 1).Font.ColorIndex = 3 'rouge (facultatif)
    .Resize(d.Count + 1).Borders.Weight = xlThin 'bordures
  End With
End If
End Sub
La macro s'exécute quand on active la feuille.

Fichier joint.

A+
 

Pièces jointes

  • Nombre_de_ventes VBA(1).xlsm
    74.3 KB · Affichages: 70
Dernière édition:

serir

XLDnaute Junior
Re : Compter selon classes d'ages et sexe

Bonjour tout le monde,

Merci beaucoup Modeste geedee:eek:, ta solution avec le TCD est intéressante et je l'ai pris en considération elle est moins compliquée à comprendre et à utiliser.
C'est vrai je voulais utiliser le vba parce que c'est très rapide par rapport les formules classiques mais aussi pour la maitriser avec le temps et avec la pratique ce qui me permettrai de trouver des indicateurs de suivi des statistiques plus pertinents et plus parlants et ce quel que soit la structure des données.
Je te remercie beaucoup job75 pour ta riche initiative.
 

Discussions similaires

Réponses
1
Affichages
236

Statistiques des forums

Discussions
312 308
Messages
2 087 103
Membres
103 469
dernier inscrit
Thibz