1 pièce(s) jointe(s)
NB.SI.ENS en VBA ou comment récupérer le contenu d'une zone de liste
Bonjour,
À partir d'une liste d'adhérents, je voudrais remplir une feuille de statistiques.
Les critères sont :
- par catégorie jeunes, adultes et seniors calculé dans le UF sans souci,
- par le choix du loisir dans une zone de liste, et là ça se complique.
Dans la feuilles STATS, la fonction NB.SI.ENS fonctionne parfaitement mais juste à partir de la V2007. Or ce tableau doit fonctionner aussi sur les versions antérieures.
Catégorie | Cot2012 | Broderie | Cinéma | Cuisine | etc.
Jeunes | 422 € | 2 6
Adultes | 340 € | 7 4
Seniors etc.
Formule pour l'année de cotisation : =SOMME.SI.ENS(l_mont_cot;l_id_adh;"JEU*";l_annee_adh;2012)
Formule pour les loisirs : =NB.SI.ENS(l_id_adh;"JEU*";l_loisirs;I$2)
J'ai essayé avec somme prod mais il me retourne 0.
Donc pour "essayer" de contourner le problème, j'envisage de faire une boucle pour récupérer le loisir choisi et l'ajouter dans les colonnes/lignes respectives et :cry:.
Le code sous trouve dans le mod_traitement, sub écrit_adhérent et presque à la fin mise à jour du tableau annuel des statistiques.
Merci pour votre aide.
Cordialement
Chris
Un petit graphique pour finaliser le tout
Encore merci, ça fonctionne nickel !
Du coup plus besoin de faire la mise à jour en VBA.
Pour finaliser le tout, j'aimerai afficher le graphique dans un autre formulaire quand je clique sur le bouton Statistiques.
Le graphique existe déjà dans la feuille PAR_ADH, il "suffit" donc de l'afficher dans un formulaire, j'ai bien pensé à exporter mon graphique en image, puis insérer l'image dans le formulaire, mais il doit y avoir plus professionnel :oops:.
Sinon en vba avec le code suivant (qui ne fonctionne pas:cry:, en fait ça recrée un graphique, ça ne récupère pas l'existant):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Sub aff_graphique()
'début en col G jusqu'en P, et lignes 3 à 5
Dim arrData(7 To 16, 3 To 5)
Dim i As Integer
For i = 7 To 16
' Les valeurs de la colonne G remplissent la première
' série du tableau. Si ces valeurs sont des chaînes,
' elles deviennent des étiquettes de lignes.
Dim arrValues(7 To 16, 3 To 5)
arrData(i, 1) = Worksheets("PAR_ADH").Range("G" & i + 1).Value
' Les valeurs de la colonne B remplissent ensuite la seconde série.
arrData(i, 2) = Worksheets(1) _
.Range("I" & i + 1).Value
Next i
MSChart1.SeriesType = VtChSeriesType2dArea
MSChart1.ChartType = VtChChartType2dBar
MSChart1.ChartData = arrData
End Sub |
Sur la ligne en rouge, il me dit que l'indice n'appartient pas à la sélection, je pense que c'est arrData le problème.
Merci encore pour ton aide.
Cordialement
Chris