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

Compter selon classes d'ages et sexe

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

S

serir

Guest
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

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

Dernière modification par un modérateur:
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

Dernière édition:
Re : Compter selon classes d'ages et sexe

Bonjour tout le monde,

Merci beaucoup BigDaddy154 et JBARBE vous m'avez vraiment sauvé, l'exécution est très rapide d'ailleurs c'est pour ça je préfère le vba.
 
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

Dernière édition:
Re : Compter selon classes d'ages et sexe

Bonjour tout le monde,

Merci beaucoup Modeste geedee😱, 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.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
370
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…