Gestion du personnel

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
mipec
Membre habitué
Membre habitué
Messages : 131
Inscrit le : 29 mai 2015
Version d'Excel : 2010

Message par mipec » 14 avril 2016, 13:34

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 :ave:

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.

;;)
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'922
Appréciations reçues : 538
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 15 avril 2016, 16:11

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...
equipe v4.xlsm
(74.68 Kio) Téléchargé 27 fois
Le moment est venu d'y mettre des explications ... je vais commencer à rédiger !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'922
Appréciations reçues : 538
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 15 avril 2016, 16:31

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.

Onglet "Calendrier" :

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 ...

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mipec
Membre habitué
Membre habitué
Messages : 131
Inscrit le : 29 mai 2015
Version d'Excel : 2010

Message par mipec » 15 avril 2016, 23:00

merci pour la fonction,super descriptif ;;)
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'922
Appréciations reçues : 538
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 16 avril 2016, 04:22

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
Repartir les missions.xlsm
(76.37 Kio) Téléchargé 19 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mipec
Membre habitué
Membre habitué
Messages : 131
Inscrit le : 29 mai 2015
Version d'Excel : 2010

Message par mipec » 16 avril 2016, 12:45

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..?
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'922
Appréciations reçues : 538
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 16 avril 2016, 13:01

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 ...

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mipec
Membre habitué
Membre habitué
Messages : 131
Inscrit le : 29 mai 2015
Version d'Excel : 2010

Message par mipec » 16 avril 2016, 14:00

J'ai changé de PCC et c est bon ;;)
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'922
Appréciations reçues : 538
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 18 avril 2016, 04:47

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%
Repartir les missions.xlsm
(82.84 Kio) Téléchargé 19 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
m
mipec
Membre habitué
Membre habitué
Messages : 131
Inscrit le : 29 mai 2015
Version d'Excel : 2010

Message par mipec » 18 avril 2016, 11:49

bonjour steelson :)

tu as retiré le double clic? :snif:
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 ;;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message