Automatiser le placement de personnel en fonction de la période d'emploi

Tophe2

XLDnaute Impliqué
Bonjour le forum,

J'ai un fichier (que je dupliques en fonction des centres environ 35 actuellement) que j'utilise à chaque période de vacances scolaire.

Il y a 3 onglets un onglets "registre" où les directeurs demandent du personnel sur certainement période une ligne est égal à un contrat.

Si la demande est validé nous la passons en "Procédure en cours" et nous plaçons l'animateur ou Adjoint/directeur ou surveillant de Baignade dans l'onglet "Visuel" sur les semaines où il doit être affecté, avec de noté le 1er jour de contrat sur la 1er semaine d'emploi et sur la dernière semaine le dernier jour du contrat.

Il y a également un onglet "Effectif" en lien avec l'onglet "Visuel" qui nous informe du nombre d'enfants par semaine et donc des animateurs qui doivent être présent (maternelles : 8 enfants 1 animateur, primaires : 12 enfants 1 animateurs).

En Blanc dans l'onglet "Visuel" les animateurs à recruter semaine par semaine.

Existe t il une solution pour automatiser le placement des animateurs semaine par semaine, c'est à dire le passage de l'onglet "registre" à l'onglet "Visuel" c'est à dire la copie de la colonne A, B et C de l'onglet "Registre" en fonction des dates d'emploi.
et est il aussi possible de griser automatiquement les lignes de l'onglet "Visuel" en fonction du prévisionnel inscrit sur l'onglet "Effectif".

Je joins à ce mail une copie du fichier qui peut contenir au maximun 1 Directeur, 3 adjoints, 1 surveillant de Baignade, 30 animateurs et 1 agent de collectivité.

Merci par avance pour votre aide

Cordialement et bonne journée

Christophe.
 

Pièces jointes

  • AL Matrice Equipe Eté Ebauche.zip
    166.9 KB · Affichages: 240

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Re,

Je vais essayer de faire ce que tu me proposes.

J'ai une question à priori si l'effectif réel est plus important que le prévisionnel les cellule de l'onglet Visuel ne le prennent pas en compte ?

Faut il dégriser autrement les cellules dont j'aurai besoin? ou y a t il une solution ?

Bonne Journée
Christophe.
 

CHALET53

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Cette aspect du problème n'ayant (à mon sens) jamais été évoqué, j'ignore totalement (jusqu'à présent) les lignes du Réel de la feuille Effectifs
Une solution (peut-être) serait de donner priorité dans le traitement aux lignes du réel (si elles sont renseignées) : qu'en penses-tu ?
sous réserve de faisabilité pas trop compliquée
A te lire
 

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Re,

Tu as entièrement raison je n'ai jamais évoqué je comprendrai que cela soit trop compliqué à prendre en compte maintenant.

Quand tu dis de donner priorité dans le traitement des lignes du réel :

Cela veut dire que si le réel est rempli le fichier prend en compte le réel à la place du prévisionnel ou si le réel est supérieur au prévisionnel il prend en compte le réel !

Bon en tout cas ta proposition sera super comme d'habitude.

Merci
Bonne soirée
Cordialement
Christophe.
 

CHALET53

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Si le réel est renseigné, il devient prioritaire
S'il n'y a qu'une ligne de réel renseignée, l'autre reste le prévisionnel
 

Pièces jointes

  • Thophe2V6ter.zip
    198.7 KB · Affichages: 110
  • Thophe2V6ter.zip
    198.7 KB · Affichages: 104
  • Thophe2V6ter.zip
    198.7 KB · Affichages: 105
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonjour,

C'est super - MERCI

Peux tu me dire ce qu'il faut modifier dans ton code si à un moment je dois commencer non pas à la ligne 15 mais 16 ou 17, 18....
Est ce compliqué à faire ?

Car sur des centres il se peut que l'équipe de direction soit plus nombreuse que cela, comme cela ne concerne uniquement 2 ou 3 centres je peux faire les modifications manuellement, si c'est possible.

Merci encore pour ton aide très précieuse

Bonne Journée
Cordialement
Christophe.
 

CHALET53

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Re,

A faire avec précaution et tester avant d'insérer de nouveaux noms dans registre et Proposition qu'on retrouve tous nos petits

Sur VBE :

Faire Edition / Remplacer

15 par 20 (si tu rajoutes 5 lignes)

choisir : Dans Projet en cours

Cliquer sur Suivant : A chaque arrêt sur 15 vérifier qu'il est concerné (a priori tous sauf le 15 dans les lignes .ColorIndex=15 et faire Remplacer
Il faut sans doute aussi rajouter 5 lignes à la fin : faire la même chose en remplaçant 45 par 50 (toujours s'il est concerné)

Simuler à partir de Registre pour voir si tout est ok
 

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonjour Chalet53,

Je suis en train de protoger certains onglet et j'ai un problème que je n'arrive pas à résoudre et encore moins à comprendre.

Je m'explique :
Lorsque je suis sur l'onglet Effectifs et que je modifie un effectif la macro "grisage" se lance comme j'ai protégé la feuille visuel pour éviter que les directeur ne fasse n'importe quoi j'ai don au début de cette macro saisi " Sheets("Visuel").Unprotect (picott) " le mot de passe étant "picott".

A chaque fois que j'ai eu à faire cela il ne m'a jamais demander de saisir le mot de passe dans une boite de dialogue là je ne comprends pourquoi il me le demande.

Je n'arrive pas à ne pas faire apparaître cette boite donc que le code soit pris en compte sans que personne ne le saisisse. Je trouve cela bizarre car il n'y a que là qu'il me le propose!!

Je te joins le fichier (ziper) si tu arrives à voir pourquoi il m'affiche cette boite, car là je ne sais pas comment faire pour protéger cette feuille sans avoir à saisir le mot de passe autre que ce que j'ai fait.

Bonne Journée
Cordialement
Christophe.

Je te joint le fichier avec essentiellementles deux onglet qui font défaut effectifs et visuel avec les code qui vont avec.
 

Pièces jointes

  • PB Protection.zip
    207.4 KB · Affichages: 94
  • PB Protection.zip
    207.4 KB · Affichages: 94
  • PB Protection.zip
    207.4 KB · Affichages: 93

CHALET53

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonjour,

je n'ai pu te répondre plus tôt : belle matinée donc ski

Tel que tu l'as écrit, il considère picott comme une variable (qui est évidemment vide) : mets le entre guillemet à l'intérieur de tes parenthèses ("picott")
je note qu'il est présent deux fois : dans la macro associée à la feuille Effectifs et au début de la macro grisagebis

a+

PS : par curiosité, je viens de vérifier le fichier AllMatrice que tu m'avais envoyé :picott est bien entre guillemets
 
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Re,

Pour ma part super soleil (dans le Var) mais malheureusement j'étais de déménagement (la soeur, on peut pas refuser).

Merci, J'ai voulu recopier le code mais j'ai oublié les guillemets ça ne pardonne pas pourtant avant de poster j'avais vérifié mais pas comme il faut.

Puis je te déranger à nouveau si besoin ?

Merci énormément pour toute ton aide et proposition.

Bonne Journée
Cordialement
Christophe.
 

Tophe2

XLDnaute Impliqué
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonsoir Chalet53,

Je suis entrain de tester le fichier tout à l'air de bien fonctionner, pourrais tu me dire ce que je dois copier (module et userform) pour le mettre dans le(s) fichier(s) que je suis en train d'utiliser afin de le tester avec un fichier en cours pour les vacances de février ou d'avril (avant le gros rush de l'été)

2 questions :
si je prends l'exemple de toto titi et que je mets 5 jours de plus à la fin du 1er contrat et si je mets 5 jours de plus au début du 2ème contrat la date de fin et égale à la date du début du 2ème contrat est il possible si deux dates se chevauchent ou identique pour la même personne d'avoir une couleur d'alerte par exemple (rouge) ou une autre possibilité ? cela peut arriver sur l'été surtout quand le personnel fait les deux mois (juillet et aout).

Pourrais ton avoir un endroit ou la personne qui fait les contrats, coche ou mets une croix dans une cellule ou autre, pour savoir ce qui à dejà été fait.

C'est vraiment super ce que tu as pu faire, si ce n'est pas possible de faire quelque chose par rapport aux deux questions c'est pas grave nous sommes là déjà dans un Bonus et il est vraiment super l'outil pour travailler.

Merci encore
Bonne Journée
Christophe.
 
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonjour,

Comme la fois précédente, tu procèdes par export de ce fichier et import dans ton fichier des modules 1, 2, 3 et du userform2
Pour les deux questions, je vais voir (peut-être que la semaine prochaine)

a+
 

ChTi160

XLDnaute Barbatruc
Re : Automatiser le placement de personnel en fonction de la période d'emploi

Bonjour le Fil

Arrf histoire de venir Saluer Christophe et Féliciter Chalet53 pour son travail

je me suis permis , afin de ne pas venir les mains vides de revisiter la procédure d'Impression de la ListView1
j'ai donc tenté de la simplifier (en supprimant la procédure de mise en forme de la feuille "IMPRIM" ) tout en l'incluant dans la procédure du Bouton "CommandButton1_Click()"
j'ai placé dans le fichier une procédure (qui n'est pas de moi Lol) pour vérifier la présence ou non de la Feuille "IMPRIM" cela permet de garder le Bouton "CommandButton1" visible
Module 3
Code:
Public Function FeuilleExiste(sNomFeuille As String) As Boolean
    On Error GoTo Err_FeuilleExiste
    FeuilleExiste = False
    FeuilleExiste = Not ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing
Err_FeuilleExiste:
End Function
ci dessous la procédure liée au Bouton "CommandButton1" du Userform2

Code:
Private Sub CommandButton1_Click()
Dim WsCible As Worksheet
Dim nb As Integer
Dim i As Byte
Dim j As Integer
Dim k As Byte

With Application
        .ScreenUpdating = False 'on inibe
        .DisplayAlerts = False      'idem
End With
With ActiveWorkbook 'avec le classeur actif
        
                   If FeuilleExiste("IMPRIM") = True Then .Sheets("IMPRIM").Delete 'Test , si la feuille IMPRIM existe , on la supprime
        
  Application.DisplayAlerts = True 'on réactive l'alerte
  
Set WsCible = .Sheets.Add(, Worksheets(Worksheets.Count))

With WsCible
             .Name = "IMPRIM"
         nb = UserForm2.ListView1.ListItems.Count
    For i = 1 To UserForm2.ListView1.ColumnHeaders.Count

      With .Cells(4, i)
             .Value = UserForm2.ListView1.ColumnHeaders(i)
            
           With .Font
                  .Bold = True
                  .Name = "Arial"
                  .Size = 12
            End With
              
      End With
    Next i
    For j = 1 To UserForm2.ListView1.ListItems.Count
  
               .Cells(j + 4, 1) = UserForm2.ListView1.ListItems(j).Text 'on colle la valeur
               
    For k = 1 To UserForm2.ListView1.ColumnHeaders.Count - 1 'pour chaque colonne de la listView
    
        With .Cells(j + 4, k + 1) 'avec la cellule ainsi determinée
           Select Case k ' selon la valeur de K
                Case 4, 5 'si =4 ou 5 on colle et on formate
                     .Value = Format(UserForm2.ListView1.ListItems(j).ListSubItems(k).Text, "00000")
                     .NumberFormat = "m/d/yyyy"
                Case Else 'autre cas
                      .Value = UserForm2.ListView1.ListItems(j).ListSubItems(k).Text 'on colle la valeur
            End Select
                     .EntireColumn.AutoFit 'on formate la colonne
        End With
    Next k 'autre colonne
        
    Next j 'autre ligne
    
    With .Range(.Cells(4, 1), .Cells(4 + nb, k)) 'avec cette plage de donnees ainsi déterminée
           
        With .Borders 'on formate les bordures
               .LineStyle = xlContinuous
               .Weight = xlThin
        End With
            
    End With
Stop
    End With
End With
Application.ScreenUpdating = True 'on réactive le defilement
    'If Application.Dialogs(xlDialogPrinterSetup).Show = True Then Stop: UserForm2.PrintForm
'Stop
End Sub

à tester Lol et sans prétention de ma part .

Bonne Continuation pour le développement de cette appli

Bravo encore à Chalet53

Bonne Journée
Amicalement
Jean Marie
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs