Compter le nombre de personnes dans des onglets

Bonjour,

ayant posté hier ce sujet, j'ai eu un petit problème technique, c'est pourquoi je repost ce sujet en esperant obtenir une réponse.

Voilà , j'ai des onglets qui représentent differents corps de metiers travaillant sur un chantier qui peut durer plusieurs mois.

Sur le fichier joint en exemple j'ai pris l'exemple des peintres , nous avons des onglets de peintres només " Peintres 05 " qui sous entend que ceux sont les peintres du mois de mai . Apparaissent sur ces onglets pour chaque mois, le nom de personnes et le nombre d'heures qu'ils ont effectués. bien que ce soit des peintres en fonction des mois, ce ne sont pas forcement les mêmes personnes qui y travaille.

ce que je souhaiterai c'est que sur l'onglet "Récap" apparaissent pour les peintres par exemple, le nombre de personnes ayant travaillé au moins une fois sur ce chantier, peu importe le nombre d'heures qu'ils ont effectués.

J'ai mis sur le fichier joint l'exemple de ce que je souhaiterai obtenir.

je sais pas si on peut le faire au travers d'une formule, ou faut il passer par du VBA

Merci par avance pour ceux qui s'interesseront à mon sujet

Cordialement;

Mamarus

35classeur1.zip (5.86 Ko)

Bonjour,

Ceci n'est pas vraiment une solution, mais plus une idée de présentation différente.

Voir la pièce jointe.

Cdlt,

Sad

29classeur1.zip (12.35 Ko)

Bonjour,

Merci tout d'abord pour la réponse, mais ce qui a été réalisé ne correspond pas tout à fait à ce que je recherche, en effet je dois avoir sur l'onglet "Recap" par corps de metier, le nombre de personnes ayant travaillé au moins une fois sur ce chantier et ce quelque soit le mois.

Le problème c'est que je ne travaille qu'avec des onglets qui representent chacun un corps de metier et un mois , l'exemple joint refeltte parfaitement le résultat souhaité.

Cordialement;

Mamarus

Bonjour mamarus,

Une chtite question : Comment récupère tu le nom des différents salariés sur l'onglet recap

.

Bonjour,

je ne recupere pas les nom des salariés sur l'onglet "recap", est simplement affiché sur l'onglet "récap" le nom du corps de metier ici peintres en exemple, et le nombre de personnes qui y ont travaillé sur ce chantier.

Aujourdhui j'ai sur chaque onglet la possibilité de savoir pour le mois traité , le nom et le nombre de personnes qui y ont travaillé au moins 1 fois sur ce chantier pour ce mois. La dificulté étant que d'un mois à l'autre, cela n'est pas forcement les memes personnes qu'ils y travaillent.

L'idée et c'est toute la difficulté, c'est de recencer sur l'onglet "recap", par corps de metier, le nombre de personnes qui y ont travaillé au moins une fois sur ce chantier, Je" pense que cela passe forcement par le recensement de ces personnes sur chaque onglet et l'on doit faire resortir ensuite une sorte de liste sans doublons et compter le nombre sans doublons de cette liste.

J'espere avoir été un peu plus clair, mais j'avoue que cela n'est pas trop évident à expliquer

Mamarus

Bonjour à tous,

mamarus a écrit :

Je pense que cela passe forcement par le recensement de ces personnes sur chaque onglet et l'on doit faire resortir ensuite une sorte de liste sans doublons et compter le nombre sans doublons de cette liste

Je pense également que c'est la solution, je me penche sur cette piste et te tiens au courant.

Bonjour à toutes et tous,

mamarus a écrit :

Je pense que cela passe forcement par le recensement de ces personnes sur chaque onglet et l'on doit faire resortir ensuite une sorte de liste sans doublons et compter le nombre sans doublons de cette liste

@mamarus, N'ayant pas plus de détails sur le NB de corps de métier ni sur la présentation finale de ton onglet recap, j'ai bidouillé un truc qui donne le résultat que tu recherche.

Sachant qu'il faudra le retravailler au fil de tes questions.

16mamarus-01.zip (24.85 Ko)

A+

Bonjour à tous,

autre proposition par fonction personnalisée à mettre dans un module standard :

Function nbIntervenant(fonction As String, plage As Range, Optional mois As Long)
    Dim Dict, c As Variant, pl() As Variant, sh As Worksheet
    Application.Volatile
    Set Dict = CreateObject("Scripting.Dictionary")
    For Each sh In Worksheets
        If mois <> 0 Then Set sh = Worksheets(fonction & " " & Format(mois, "00"))
        If UCase(Left(sh.Name, Len(fonction))) = UCase(fonction) Then
            For Each c In sh.Range(plage.Address)
                If c <> "" And c.Offset(1) > 0 Then Dict(c.Value) = c.Value
            Next c
        End If
        If mois <> 0 Then Exit For
    Next sh
    nbIntervenant = Dict.Count
End Function

Seules les noms ayant effectué plus de 0h sont comptés.

eric

24classeur2.zip (95.57 Ko)

Bonjour,

Merci de vous être penché sur mon problème, pour information, j'ai 15 corps de métiers à traiter (pas tous en meme temps ) , vous trouverez également une copie de l'onglet " Recap " on y trouve la cellule nombre de personnes à renseigner.

Merci

Cordialement;

Mamarus

17classeur4.zip (13.63 Ko)

Bonjour,

et si tu testais et commentais les propositions faites ?

Là j'ai l'impression d'avoir bossé pour rien.

eric

bonjour

une petite contribution

principe: j'importe puis denombre

j'ai essayé avec un champ nommé et indirect ; niet ......

10mamarus.zip (6.28 Ko)

attention aux matrricielles

cordialement

Comme on a changé de page je réitère :

et si tu testais et commentais les propositions faites ?

Là j'ai l'impression d'avoir bossé pour rien.

eric

Bonjour eric,

Je te rassure, tu n'as pas travaillé pour rien, simplement suite à ta proposition que je trouve interessante , mais n'ayant assez de compétences en VBA, je me posai des questions à savoir, une fois que tu la mets dans un module comment peut elle s'adapter à chaque corps de métier voir les cellules D9 à D24 dans la feuille de "récap"

j'ai vu que tu avais joint un classeur 2, mais je ne vois pas la relation entre le module VBA et le classeur 2 ?

Le module que tu as écrit est je supose adapté à un seul corps de métier, j'ai informé hier que j'en avais 15 et ait fourni une copie de la feuille récap

C'est cette zone de cette partie qui me manque à mon sens , mais comme je te l'ai dit je n'ai pas assez de compétences en VBA.

Merci en tout cas pour tout ce qui a été fait;

Mamarus

Bonjour,

effectivement, le fichier n'a rien à voir. Le bon était rester dans le répertoire temporaire.

comment peut elle s'adapter à chaque corps de métier

Tu indiques à la fonction personnalisée le métier dans le 1er paramètre.

Soit en dur ("Peintres"), soit par une cellule contenant ce nom de métier (A7).

Le tout est que les feuilles à prendre en compte commencent exactement par cette chaine.

Et dans le 2nd paramètre tu lui indiques dans quelles cellules de ces feuilles elle doit comptabiliser les noms (C2:L2).

=nbIntervenant(A7;C2:L2) te ramène 5

eric

11classeur2.zip (14.56 Ko)

Bonjour Eric,

Je te remercie pour le travail que tu as effectué, non pas que je ne suis pas interessé par ce que tu proposes, ni pas vouloir le tester, mais je me pose plein de questions par rapport à celà. si j'ai bien compris le module est à inserer dans un onglet, mais je supose qu'il ne gère qu'un corps de métier or comme je l'ai mentionné hier , j'en ai 15 à gerer , j'ai fourni aussi la feuille "Récap" qui montre sur quells cellules ils doivent apparaitre ( cellules E9 : E24 ), le problème c'est que je n'y connais pas grand chose en VBA ni comment appliquer les modules aux onglets ou feuilles.

D'autre part dans ta réponse, tu joints un classeur 2 , mais je ne vois pas le lien de ce code avec le classeur 2 .

Si tu peut m'éclaircir ce serait sympa

Cordialement;

Mamarus

D'autre part dans ta réponse, tu joints un classeur 2 , mais je ne vois pas le lien de ce code avec le classeur 2 .

Heuuuu, restons calme... Et si tu téléchargeais le nouveau classeur, tu comprendrais peut-être mieux non ?

mais je supose qu'il ne gère qu'un corps de métier

arrete de supposer et teste.

Je t'ai dit : Tu indiques à la fonction personnalisée le métier dans le 1er paramètre.

Donc tu peux en mettre des millions si tu veux.

Donc ouvre le fichier et teste, tu poseras tes questions après. Parce que là on discute dans le vide

eric

30 04 2013 12 37 05
Rechercher des sujets similaires à "compter nombre personnes onglets"