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 !