Gestion du personnel

bonjour steelson

parfait,c'est exactement ce a quoi je voulais arriver,c'est vraiment super, merci pour tes compétences le temps utilisé a creer le tableau

le truc bien serait que j'arrive a comprendre quelle formule tu as utilisé pour quelle fonction,si tu pouvais m'éclairer la dessus?

et sans vouloir abuser,du coup j'ai l'impression que tout est possible,est ce possible de rajouter ces quelques fonctions:

>possibilité pour certains collaborateurs, de faire le meme poste(défini a l'avance) jusqu'a 3 jours dans leurs meme semaine,identifiés dans le menu deroulant par la lettre "F" avant ou après leurs noms.

>possibilité de fidéliser certains collaborateurs a certains postes une semaine sur deux

ex :jean en appro et montage sa premiere semaine puis essaie et methode sa deuxième semaine,ainsi de suite.

>>gestion plus simple des absences,du genre "absent du... au..." avec choix sur calendrier en popup et raison de l'absence par menu déroulant.

mipec a écrit :

>possibilité pour certains collaborateurs, de faire le meme poste(défini a l'avance) jusqu'a 3 jours dans leurs meme semaine,identifiés dans le menu deroulant par la lettre "F" avant ou après leurs noms.

>possibilité de fidéliser certains collaborateurs a certains postes une semaine sur deux

ex :jean en appro et montage sa premiere semaine puis essaie et methode sa deuxième semaine,ainsi de suite.

Aïe, là je suis perdu, car cela va à l'encontre de la règle "pas 2 fois sur la même mission dans "sa" semaine !!

Que signifierait "F" ?

Il s'agirait donc d'une dérogation ... je vais y réfléchir.

mipec a écrit :

>gestion plus simple des absences,du genre "absent du... au..." avec choix sur calendrier en popup et raison de l'absence par menu déroulant.

YES, c'est fait, mais je suis pour une version graphique (WYSIWYG)

Donc dans le fichier joint, tu sélectionne une cellule ou plusieurs et un menu apparaît ... donc tu peux sélectionner toute une plage correspondant à un congé maladie, un congé etc...

49equipe-v4.xlsm (74.68 Ko)

Le moment est venu d'y mettre des explications ... je vais commencer à rédiger !

Onglet "Parametres" : il comporte la liste demandée des motifs d'indisponibilité (absence pour maladie, congés, ou formation ... liste non exhaustive ici).

Le code sera seul repris dans l'onglet "Indisponibilites".

Pas de macro, pas de formules.

[u]

Onglet "Calendrier" :[/u]

Il comporte les rythmes à raison de cycles de 42 jours comme stipulé.

Il est auto-ajustable : en clair, selon la date du jour, il affiche le cycle encours, le cycle précédent et commence en fait la veille du cycle précédent par la formule :

=ENT(AUJOURDHUI()/42-1)*42

A la sélection de l'onglet, il pointera sur la date du jour ("gadget") :

Private Sub Worksheet_Activate()
    Cells(Now() - [A2] + 1, 1).Select
End Sub

Il existe une colonne pour chaque "cycle" avec comme formule, par exemple :

=SI($B3<>D$1;1+D2;0)

Ceci permet de mettre un 0 quand le collaborateur est en repos, sinon d'incrémenter de 1. Pourquoi ? cela permettra ensuite, pour un jour donné, de savoir quel est le numéro du jour de "sa" semaine, et donc quand "sa" semaine a commencé ! Par ce biais, on pourra contrôler qu'il n'a pas déjà eu la même mission sur cette semaine.

Onglet "Compétences" : pas de macros, pas de formules, mais c'est la base des informations sur les collaborateurs et les missions. C'est ici et uniquement ici qu'on peut les mettre à jour !

Pour chaque collaborateur, est donné aussi le "cycle" d'affectation.

Onglet "Indisponibilites" : d'abord les collaborateurs sont liés par une formule simple à l'onglet précédent.

Les dates commencent quand on veut (date sur fond jaune) et sont ensuite incrémentées de 1.

A l'ouverture, sont rappelés sur fond de couleur les jours de repos par la macro un peu plus complexe :

Private Sub Worksheet_Activate()

    Dim i%, j%, qui$, equipe%, ceJour As Long, numJour%, derH%, derV%
    derV = Sheets("Competences").[A65000].End(xlUp).Row
    derH = [B1].End(xlToRight).Column
    Range(Cells(2, 2), Cells(derV, derH)).Interior.ColorIndex = 2
    For i = 2 To derV
        qui = Sheets("Competences").Cells(i, 1)
        equipe = Sheets("Competences").Cells(i, 2)
        For j = 2 To derH
            ceJour = Cells(1, j)
            numJour = Sheets("Calendrier").[A2].Offset(ceJour - Sheets("Calendrier").[A2], equipe + 2)
            If numJour = 0 Then Cells(i, j).Interior.ColorIndex = 40
        Next j
    Next i

End Sub

Quand on clique sur une cellule ou sur une plage de cellules, la macro suivante se déclenche (macro évenementielle) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo fin
    If Target.Row > 1 And Target.Column > 1 Then
        If Cells(Target.Row, 1) <> 0 And Cells(Target.Row, 1) <> "" And Cells(1, Target.Column) <> "" Then MotifAbsences.Show
    End If
fin: Exit Sub
End Sub

Elle lance donc l'appel au menu déroulant dont le code est le suivant et permet d'affecter un motif d'indisponibilité à la plage sélectionnée :

Private Sub UserForm_Activate()

    Dim i%
    Me.motif_indispo.AddItem ("") ' pour pouvoir effacer
    For i = 2 To Sheets("Parametres").[A65000].End(xlUp).Row
        Me.motif_indispo.AddItem (Sheets("Parametres").Cells(i, 1) & " - " & Sheets("Parametres").Cells(i, 2))
    Next i

End Sub

Private Sub motif_indispo_Click()

    Selection.Value = Left(Me.motif_indispo.Value, InStr(Me.motif_indispo.Value, " - "))
    Me.motif_indispo.Clear
    Me.Hide

End Sub

Onglet "Affectation" :

Les missions sont liées avec celles définies dans l'onglet "Competences" avec un simple changement colonne > ligne par la fonction suivante :

=DECALER(Competences!$A$1;;LIGNE()-2)

Quand on clique sur une case, le menu déroulant s'affiche (macro éveénementielle) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo fin
    If Target.Row > 3 And Target.Column > 1 And Target.Count = 1 Then
        ligne = Target.Row
        colonne = Target.Column
        If Cells(Target.Row, 1) <> 0 And Cells(Target.Row, 1) <> "" And Cells(1, Target.Column) <> "" Then AideAffectation.Show
    End If
fin: Exit Sub
End Sub

Le menu déroulant est géré par cette macro :

Private Sub UserForm_Activate()

    Dim CelH As Range, CelV As Range
    Dim i%, qui$, equipe%, ceJour As Long, numJour%

    Me.emploi.Caption = Cells(ligne, 1) & " - " & Cells(1, colonne)
    Me.equipier.AddItem ("") ' pour pouvoir effacer

    For i = 2 To Sheets("Competences").[A65000].End(xlUp).Row
        qui = Sheets("Competences").Cells(i, 1)
        equipe = Sheets("Competences").Cells(i, 2)
        ceJour = Cells(1, colonne)
        numJour = Sheets("Calendrier").[A2].Offset(ceJour - Sheets("Calendrier").[A2], equipe + 2)
        Set CelV = Range(Cells(1, colonne), Cells([A65000].End(xlUp).Row, colonne))
        Set CelH = Range(Cells(ligne, Application.max(2, colonne - numJour + 1)), Cells(ligne, colonne - numJour + 6))
        If WorksheetFunction.CountIf(CelV, qui) = 0 _
            And WorksheetFunction.CountIf(CelH, qui) < 1 _
            And numJour <> 0 _
            And Sheets("Indisponibilites").Cells(i, ceJour - Sheets("Indisponibilites").[B1] + 2) = "" _
            And Sheets("Competences").Cells(i, ligne - 1) <> "" _
            Then Me.equipier.AddItem (qui)
    Next i

End Sub

Private Sub equipier_Click()
    Cells(ligne, colonne) = Me.equipier.Value
    Me.equipier.Clear
    Me.Hide
End Sub

Voilà, j'ai essayé de faire propre, mais c'est vrai que je me suis fait plaisir à prendre pas mal de trucs de programmation ...

merci pour la fonction,super descriptif

N'ayant pas trouvé de solution à cela :

>possibilité pour certains collaborateurs, de faire le meme poste(défini a l'avance) jusqu'a 3 jours dans leurs meme semaine,identifiés dans le menu deroulant par la lettre "F" avant ou après leurs noms.

>possibilité de fidéliser certains collaborateurs a certains postes une semaine sur deux

ex :jean en appro et montage sa premiere semaine puis essaie et methode sa deuxième semaine,ainsi de suite.

J'ai passé l'activation du menu déroulant sur un double clic, ce qui permet de conserver la main plus facilement.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error GoTo fin
    If Target.Row > 3 And Target.Column > 1 And Target.Count = 1 Then
        ligne = Target.Row
        colonne = Target.Column
        If Cells(Target.Row, 1) <> 0 And Cells(Target.Row, 1) <> "" And Cells(1, Target.Column) <> "" Then AideAffectation.Show
    End If
fin: Exit Sub
End Sub

Bonjour steelson

Tu te sous estime , apres tout ce que tu a fais

Pour le double clic, lorsque j'affecte ça fait planter le tableau


Et En créant un nouvel onglet"fidélisation" avec une nouvelle règle (3 premiers jours de sa semaine au meme poste) dont le résultat viendrait s'afficher dans l'onglet affectation..?

mipec a écrit :

Pour le double clic, lorsque j'affecte ça fait planter le tableau

Ah ! je viens de réessayer et non, chez moi c'est ok : je double-clique, je sélectionne et c'est bon.

mipec a écrit :

Et En créant un nouvel onglet"fidélisation" avec une nouvelle règle (3 premiers jours de sa semaine au meme poste) dont le résultat viendrait s'afficher dans l'onglet affectation..?

à méditer ...

J'ai changé de PCC et c est bon

Steelson a écrit :
mipec a écrit :

Et En créant un nouvel onglet"fidélisation" avec une nouvelle règle (3 premiers jours de sa semaine au meme poste) dont le résultat viendrait s'afficher dans l'onglet affectation..?

à méditer ...

Alors, uniquement pour taquiner le code et me faire plaisir !

Si dans l'onglet "Competences" on a 2x, alors la répétition est possible.

Et dans l'onglet "Affectation", on peut sélectionner plusieurs cases (jours) sur une même ligne (mission) et ne voir apparaître que les "fidèles"...

Pas sûr que cela réponde à 100%

bonjour steelson

tu as retiré le double clic?

Si dans l'onglet "Competences" on a 2x, alors la répétition est possible.

ok si le nombre de repetition est egale au nombre de "x" ou si la repetition est au nombre de 3 maxi

Et dans l'onglet "Affectation", on peut sélectionner plusieurs cases (jours) sur une même ligne (mission) et ne voir apparaître que les "fidèles"...

si je selectionne plusieurs jour d'une mission ,moi j'ai le message "pas de possibilité multiple"

autre piste pour les affectation spécifiques(3x meme missions entre repos)

toujours dans l'idee que le menu deroulant puisse etre force de proposition ,est il possible que le non du membre puisse apparaitre en vert dans le menu deroulant,sur la mission tant qu il n'a pas ete affecté 3x dans sa semaine?

sinon un onglet specifique avec un mode de fonctionnement du type "indisponibilité"mais en sens inverse serait pas mal en terme d'ergonomie

mipec a écrit :

tu as retiré le double clic?

on peut remettre ...
mipec a écrit :

Si dans l'onglet "Competences" on a 2x, alors la répétition est possible.

ok si le nombre de repetition est egale au nombre de "x" ou si la repetition est au nombre de 3 maxi

illimité ! j'avais pensé à "au plus égale au nombre de x" ...
mipec a écrit :

Et dans l'onglet "Affectation", on peut sélectionner plusieurs cases (jours) sur une même ligne (mission) et ne voir apparaître que les "fidèles"...

si je selectionne plusieurs jour d'une mission ,moi j'ai le message "pas de possibilité multiple"

cela arrive si la sélection englobe un jour de repos ou un jour d'indispo ou si personne n'est pas déclaré "xx" !
mipec a écrit :

autre piste pour les affectation spécifiques(3x meme missions entre repos)

toujours dans l'idee que le menu deroulant puisse etre force de proposition ,est il possible que le non du membre puisse apparaitre en vert dans le menu deroulant,sur la mission tant qu il n'a pas ete affecté 3x dans sa semaine?

ah, je ne sais pas faire mais je vais chercher
mipec a écrit :

sinon un onglet specifique avec un mode de fonctionnement du type "indisponibilité"mais en sens inverse serait pas mal en terme d'ergonomie

donne un exemple sur un fichier ....

illimité ! j'avais pensé à "au plus égale au nombre de x" ...

Oui comme ca c est bon, si Je mets 3"x"sur une mission et que je ne peux affecter que 3x maxi dans sa semaine c est parfait


illimité ! j'avais pensé à "au plus égale au nombre de x" ...

Oui comme ca c est bon, si Je mets 3"x"sur une mission et que je ne peux affecter que 3x maxi dans sa semaine c est parfait

... last but not least !

et en cliquant sur A1 on désactive la macro ... de quoi jouer manuellement !

Bonjour steelson

Merci pour cette dernière évolution

Reste à pouvoir identifier dans le menu déroulant le collaborateur prioritaire sur la mission pour laquelle il est 3x...

Je n'ai pas réussi à colorier ... donc solution alternative =

Steelson a écrit :

Je n'ai pas réussi à colorier ... donc solution alternative =

efficace!

bonjour

j'essaie de faire évoluer le tableau afin de gérer trois services différents( 3 onglets)j'ai fais apparaitre les missions correspondantes aux services dans chaque onglets ,mais je me retrouve avec un collaborateur du matin dans le menu déroulant de l'après midi alors qu'il n'a pas les compétences de validé dans l'onglet competance

Bonjour,

il vaut mieux procéder par masquage de lignes comme ici :

bonjour steelson

ah oui effectivement c est bien plus simple,grand merci a toi

bonjour

je voudrais rajouter une condition de "site" dans le menu déroulant des affectations,je gère deux sites et les collaborateurs alternent de façon hebdo entre les sites,j'ai pensé gérer ca comme les absences ,mais j'ai quelques difficultés dans le fonctionnement des nouveaux onglets...

24sites.xlsm (115.69 Ko)
Rechercher des sujets similaires à "gestion personnel"