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...
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.
à méditer ...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..?
J'ai changé de PCC et c est bon
Steelson a écrit :à méditer ...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..?
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
on peut remettre ...mipec a écrit :tu as retiré le double clic?
illimité ! j'avais pensé à "au plus égale au nombre de x" ...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
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 :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"
ah, je ne sais pas faire mais je vais cherchermipec 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?
donne un exemple sur un fichier ....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
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...