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

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
 

Fichiers joints

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

Re,

Je vais essayer en espérant ne pas faire de bétise.

Merci
Bonne Journée
Cordialement
Christophe.
 

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.
 

Fichiers joints

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.
 

CHALET53

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

Pas de soucis

Déménager sous le soleil, c'est toujours plus agréable que sous la pluie (ou ....la neige)

a+
 

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
 

Tophe2

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

Bonjour Chalet53 et Jean Marie,

Merci pour ta réponse Chalet53 je vais tester ça dans le fichier.

Jean marie, je suis très content de te lire à nouveau sur exceldownloads j'espère que tout va bien pour toi.

A bientôt.

Bonne Journée à vous deux
Cordialement
Christophe.
 

CHALET53

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

Bonjour à vous deux,

Je pars faire une virée en raquette (du côté de la cascade du Rouget pour ceux qui connaissent). Je me remettrai sur le dossier la semaine prochaine et notamment tester la proposition de Jean Marie

a+
 

CHALET53

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

Bonjour,

Tu peux intégrer la proposition de Jean Marie : elle fonctionne (je n'ai pas constaté d'anomalie)

a+
 

Tophe2

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

Bonjour Le forum et Chalet53,

Voilà mon problème, la macro ne prend plus en compte la demande d'affectation des animateurs par semaine à partir de la ligne 57 onglet registre. Macro intitulé "essai".

Merci pour ton aide.
Cordialement
Christophe.
 

Fichiers joints

ChTi160

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

Bonjour Christophe
Bonjour Le Fil
Bonjour Le Forum

Arfff sacré fichier lol
lorsque j'ai lance le Userform(Monformulaire) j'ai eu un premier Bug ,du a la présence en ligne 8 colonne 4 d'une date au format Text
lors du lancement de
Code:
Private Sub TextBox6_Change()
ActiveSheet.Cells(Index, 6) = Me.TextBox6
End Sub
qui occasionne le lancement de
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' Stop
If flag = 1 Then Exit Sub
derligne = Sheets("Registre").Range("A65530").End(xlUp).Row

  If Not Application.Intersect(Target, Range("A2:J" & derligne)) Is Nothing Then

If Cells(Target.Row, 1) = "" Or Cells(Target.Row, 2) = "" Or Cells(Target.Row, 3) = "" Or Cells(Target.Row, 4) = "" Then Exit Sub
If Cells(Target.Row, 5) = "" Or Cells(Target.Row, 6) = "" Or Cells(Target.Row, 7) = "" Then Exit Sub
'a = CDec(Cells(Target.Row, 4)): b = CDec(Cells(Target.Row, 5))
[B]If CDec(CDate(Cells(Target.Row, 4))) >= CDec(CDate(Cells(Target.Row, 5))) [/B]Then MsgBox "Dates incohérentes": Target.Value = "": Exit Sub
Sheets("Visuel").Unprotect ("picott")
  Call essai
  End If
If Not Application.Intersect(Target, Range("M3:N11")) Is Nothing Then
Call controle_dates
End If
Exit Sub
Sheets("Visuel").Protect ("picott")
End Sub
J'ai donc ajouté Cdate() ici
If CDec(CDate(Cells(Target.Row, 4))) >= CDec(CDate(Cells(Target.Row, 5)))

ensuite il serait bon , car ensuite il y a d'autres Soucis pas facile a déterminer vu la longue de traitement des procédures ,que tu nous dises plus précisément ce que tu rencontre comme Probléme

je dois partir au Boulot Lol
je regarde ce qui aura été fait ce soir
Bonne Journée
Amicalement
Jean Marie
 

Discussions similaires


Haut Bas