Bonjour,
j'ai un fichier contenant des contacts dans plusieurs feuilles. Ces contacts ont participé à des évènements et sont classés par catégorie.
Je cherche à faire la somme des contacts d'une certaine catégorie ayant participé à un évènement.
J'avais l'impression que ma fonction fonctionnait, mais le résultat n'est pas toujours juste ... Parfois oui parfois non ! selon les combinaisons catégories/ évènement !
j'ai un problème avec l'identification de la dernière ligne : je me suis rendue compte en testant que la variable NbrLig était (parfois !) fausse ... je n'ai trouvé aucune autre solution.
Je joins un fichier exemple de ma situation. Evènement correspond à ev 1 , ev 2 ... et "cat" : les catégories, à poisson, citrouille ...
Je fais déjà la somme des participants à un évènement pour toutes les feuilles de cette manière :
Là je cherche à faire la même chose mais par catégorie.
En vous remerciant !
j'ai un fichier contenant des contacts dans plusieurs feuilles. Ces contacts ont participé à des évènements et sont classés par catégorie.
Je cherche à faire la somme des contacts d'une certaine catégorie ayant participé à un évènement.
J'avais l'impression que ma fonction fonctionnait, mais le résultat n'est pas toujours juste ... Parfois oui parfois non ! selon les combinaisons catégories/ évènement !
j'ai un problème avec l'identification de la dernière ligne : je me suis rendue compte en testant que la variable NbrLig était (parfois !) fausse ... je n'ai trouvé aucune autre solution.
VB:
'Fonction qui fait la somme des participants à un évènement pour une catégorie donnée (chercheur, enseignant etc.)
Function SommeParticipantscat(Evenement, cat)
'Création des variables
Dim somme As Long
Dim i As Integer
Dim j As Integer
Dim col As Long
Dim categ As Long
Dim NbrLig As Long
somme = 0
col = Sheets("ONF_COFOR").Cells.Find(Evenement, , xlValues).Column 'je récupère le numéro des colonnes dans une des feuilles : elles sont toutes agencées pareil. Ca ça fonctionne.
categ = Sheets("ONF_COFOR").Cells.Find("Catégorie", , xlValues).Column
InitialiseNoms_feuilles 'lance la macro qui rempli le vecteur Noms_feuilles avec les noms de feuilles
'Boucle pour faire la somme sur toutes les feuilles
For i = LBound(Noms_feuilles) To UBound(Noms_feuilles)
With Sheets(Noms_feuilles(i))
NbrLig = .Cells(65536, col).End(xlUp).Row
For j = 2 To NbrLig
If .Cells(j, col).Value = 1 And .Cells(j, categ).Value = cat Then somme = somme + 1
Next j
End With
Next i
SommeParticipantscat = somme
End Function
Je joins un fichier exemple de ma situation. Evènement correspond à ev 1 , ev 2 ... et "cat" : les catégories, à poisson, citrouille ...
Je fais déjà la somme des participants à un évènement pour toutes les feuilles de cette manière :
Code:
Function SommeParticipants(Evenement)
'Création des variables
Dim somme As Long
Dim i As Integer
somme = 0
InitialiseNoms_feuilles 'lance la macro qui rempli le vecteur Noms_feuilles avec les noms de feuilles
'Boucle pour faire la somme sur toutes les feuilles
For i = LBound(Noms_feuilles) To UBound(Noms_feuilles)
somme = somme + Application.Sum(Sheets(Noms_feuilles(i)).Range(RefCell(Evenement)).EntireColumn)
Next i
SommeParticipants = somme
End Function
Là je cherche à faire la même chose mais par catégorie.
En vous remerciant !