Balayage de feuille pour récupérer des données cellules

Pierre1981

XLDnaute Nouveau
Bonjour,

Je travaille actuellement sur un fichier permettant la consolidation de données envoyées par nos établissement.
le classeur se compose de la manière suivante :
il y a un menu permettant le choix des divers pôles et dans chacun de ces pôle on accède ensuite à chaque établissement le composant.
Les utilisateurs n'ont plus qu'à cliquer sur le tableau à remplir afin de renseigner les données.
Mon problème vient de mon ultime onglet qui a pour but de consolider l'ensemble.

Le tableau traite des formations, et est classé par catégorie de personnel (administratif, enseignement, restauration, ...). Mon problème vient du collectif.
en effet j'ai besoin de connaitre le nombre moyen d'heure de formation sur une catégorie et ce sur l'ensemble des établissement. Hors si nbval suffit à me renseigner pour l'individuel (je sais en testant au préalable si la cellule est vide ou non), je ne peux pas le faire pour le collectif.

Dès lors j'ai besoin d'une fonction qui va balayer l'ensemble de mon classeur et qui pour chaque feuille va regarder les cellules d'une colonne précise. Et c'est là ou est mon problème.
Je vous joins le code de ce que j'ai fait actuellement.


'donne le nombre de participants total à toutes les formations d'une catégorie sur l'ensemble de l'association
Function nbparticipassoc(colonne As String, ligne As Integer) As Integer
Dim h As Integer
Dim i As Integer
Dim rang As Integer
Dim resultat As Integer
Dim cell As String
'rang me sert à déterminer la cellule de départ pour mon cumul
rang = 17
'permet de parcourir le classeur entier
For h = 1 To Worksheets.Count
'il semble que le select soit nécessaire afin de pouvoir travailler sur une feuille
Sheets(h).Select
' mon vrai problème est ici, malgré tous mes essais et un débug pas à pas, je ne parviens pas à effectuer le test sur une cellule d'une autre feuille. (Je précise qu'il me sert à distinguer les feuilles ou il y a des données de celles qui ne sont que l'interface finalement)
If Sheets(h).Cells("A15").Value = "Personnel Administratif" Then
'boucle afin de balayer mon tableau et calculer le nombre de participant à la formation
For i = 1 To 195
cell = colonne & rang
If Not IsEmpty(sheets(h).Range(cell)) Then
If Sheets(h).Range(cell).HasFormula = False Then
resultat = resultat + sheets(h).Range("N" & rang).Value
End If
End If
rang = rang + 1
Next i
End If
Next h
nbparticipassoc = resultat
End Function
 

Pierrot93

XLDnaute Barbatruc
Re : Balayage de feuille pour récupérer des données cellules

Bonjour,

remplace peut être ceci :
Code:
If Sheets(h).Cells("A15").Value = "Personnel Administratif" Then

par cela :
Code:
If Sheets(h).Range("A15").Value = "Personnel Administratif" Then

bonne journée
@+
 

Pierre1981

XLDnaute Nouveau
Re : Balayage de feuille pour récupérer des données cellules

Merci beaucoup. Cette solution ne marche malheureusement pas.
Je pense que ça doit être lié au fait que je test une chaîne de caractère.
J'ai donc contourné la solution en faisant comme suit :
If Not IsEmpty(Sheets(h).Range("A15")) Then

Merci encore :)

Bonne journée.
 

Discussions similaires

Réponses
21
Affichages
290
Réponses
0
Affichages
153

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50