Microsoft 365 planning pour gestion d'horaire modif

smahancharif

XLDnaute Junior
bonjour je suis nouvelle ici et je souhaiterai créer un planning où les 47 employés pourrait intégrer leurs horaires il y 4 types d'horaires et 3 tupes de pauses.

merci
 
Solution
bonsoir le fil, salutations à etoto et à chti160
re smahancharif

j'ai pris en compte votre demande, (ce qui m'a amené à modifier beaucoup de macro) tout en développant une solution basée sur le fil 143, Classeur perpétuel avec sauvegarde automatique une fois par semaine. (si vous ne souhaitez pas de sauvegarde vous pouvez la neutraliser, en cellule X2 de la feuille Configuration)

J'ai supposé que vous ne travaillez pas les jours fériés, j'ai donc adopté une solution ou les jours fériés sont neutralisé dans le formulaire. (faites un essai avec la semaine 21, 44, 45 de l'année 2022)

exemple : si vous travaillez le lundi de pentecôte, supprimez la date de la feuille configuration

Dans ce classeur, l'année à l'ouverture correspond à la...

GALOUGALOU

XLDnaute Accro
re chti160 pendant que l'userform est présent il n'est pas possible de modifier les données, cela n'est pas gênant que la feuille soit visible.
il est masqué ensuite, afin que des opérateurs que nous dirons farceur, ne fasse pas des modifications mal venues sur le planning d'un collégue.
 

ChTi160

XLDnaute Barbatruc
Re
quels problèmes rencontres tu ,qui t'oblige à afficher la feuille "Base" alors quelle ne le devrait pas ?
quand je regarde la procédure "ajouter"
j'ai constaté que tu as mis :

Cells(Ligne, 5) = TextBox22.Value
Cells(Ligne, 6) = TextBox25.Value
Cells(Ligne, 7) = TextBox28.Value
Cells(Ligne, 9) = ComboBox13.Value
Cells(Ligne, 10) = TextBox42.Value
Cells(Ligne, 11) = TextBox45.Value
Cells(Ligne, 12) = TextBox48.Value[/CODE]
Ligne est bien définit à partir de la Feuille "Base"
mais ensuite rien ne définit la feuille ou les données doivent être collées
ex :
Code:
Cells(Ligne, 1)
concerne une cellule de la feuille active !
s'il y avait une notion de feuille Cible qui était introduite ca résoudrait peut être le Problème!
ex : Pour la procédure "ajouter"
VB:
Sub ajouter()
 Application.EnableEvents = False ' ajouter
On Error Resume Next
Dim Ligne As Integer
With Me
If .ComboBox2 = "" Then MsgBox "Choisir un numéro de semaine": Exit Sub
If .ComboBox3 = "" Or .ComboBox4 = "" Then MsgBox "Il manque des informations du lundi au jeudi, au moindre doute quittez à la boite de dialogue suivante"
If .ComboBox13 = "" Or .ComboBox14 = "" Then MsgBox "Il manque des informations pour le vendredi, au moindre doute quittez à la boite de dialogue suivante"
End With

If MsgBox("AJOUT : confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
Application.EnableEvents = False
With Sheets("Base")
Ligne = .Range("A456541").End(xlUp).Row + 1
        .Cells(Ligne, 1) = Me.ComboBox2 & ComboBox101
        .Cells(Ligne, 2) = Me.ComboBox101.Value
        .Cells(Ligne, 3) = Me.ComboBox2.Value
        .Cells(Ligne, 4) = Me.ComboBox3.Value
        .Cells(Ligne, 5) = Me.TextBox22.Value
        .Cells(Ligne, 6) = Me.TextBox25.Value
        .Cells(Ligne, 7) = Me.TextBox28.Value       
        .Cells(Ligne, 9) = Me.ComboBox13.Value
        .Cells(Ligne, 10) = Me.TextBox42.Value
        .Cells(Ligne, 11) = Me.TextBox45.Value
        .Cells(Ligne, 12) = Me.TextBox48.Value
End With
Unload Me
MsgBox "Informations enregistrées"
UserForm5.Show
 Sheets("Planning").Visible = xlSheetVisible
Sheets("Tuto").Visible = xlSheetVisible
Worksheets("Tuto").Select
End If
Application.EnableEvents = True
End Sub
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
je me suis permis de modifier ( simplifier )la procédure
VB:
Sub planning()
Dim f1 As Worksheet, f2 As Worksheet
Set f1 = Sheets("Base")
Set f2 = Sheets("Planning")
Application.ScreenUpdating = False
 With f2
   lig2 = .Cells(.Rows.Count, 1).End(xlUp).Row
          .Range("B4:K" & lig2).ClearContents
 lig1 = f1.Cells(f1.Rows.Count, 1).End(xlUp).Row
    lig2 = .Cells(.Rows.Count, 1).End(xlUp).Row
        For x = 3 To lig1
          For y = 4 To lig2
            If f1.Cells(x, 3) = .Cells(1, 5) Then
              If f1.Cells(x, 2) = .Cells(y, 1) Then
                .Cells(y, 2) = f1.Cells(x, 4)
                .Cells(y, 3) = f1.Cells(x, 5)
                .Cells(y, 4) = f1.Cells(x, 6)
                .Cells(y, 5) = f1.Cells(x, 7)
                .Cells(y, 7) = f1.Cells(x, 9)
                .Cells(y, 8) = f1.Cells(x, 10)
                .Cells(y, 9) = f1.Cells(x, 11)
                .Cells(y, 10) = f1.Cells(x, 12)
              End If
            End If
          Next y
        Next x
 End With
  Application.ScreenUpdating = True 
End Sub
jean marie
 

GALOUGALOU

XLDnaute Accro
re smahancharif
le même planning mais en laissant la possibilité de choisir la pause de midi en fonction du jour
Une simple demande, différente du début du fil, une révolution pour le classeur.
Avec les remarques et les conseils de etoto et de chti160 je vous propose une solution sur 5 jours.
j'ai rajouté la possibilité d'imprimer un bulletin individuel. (une feuille en plus (masquée)) ;
A l'ouverture le formulaire présente les informations essentielles, mais un bouton permet d'afficher la totalité des frames.

Essayer de bien maitriser les macros de ce classeur, car une évolution sur la réglementation du temps de travail pourrait vous obliger à modifier les macros (userform5 ) toutes les "combobox change" avec des horaires entre guillemets.
VB:
Private Sub Combobox3_change()
On Error Resume Next
TextBox21 = ComboBox3
TextBox22 = "12:00"
TextBox301 = "08:00"
TextBox23 = CDate(TextBox22) - CDate(TextBox21)
ComboBox3.Value = Format(ComboBox3.Value, "hh:mm")
ComboBox4_Change
End Sub

re chti160
j'ai tenu compte de tes macros, effectivement, c'est plus clair.
tu nous présentes dans le fil 72, une solution intéressante à inclure dans le classeur, donc nous attendons impatiemment 😇
cdt
galougalou
 

Pièces jointes

  • Gestion service semaine par employés V9.xlsm
    413 KB · Affichages: 7

Etoto

XLDnaute Barbatruc
re smahancharif

Une simple demande, différente du début du fil, une révolution pour le classeur.
Avec les remarques et les conseils de etoto et de chti160 je vous propose une solution sur 5 jours.
j'ai rajouté la possibilité d'imprimer un bulletin individuel. (une feuille en plus (masquée)) ;
A l'ouverture le formulaire présente les informations essentielles, mais un bouton permet d'afficher la totalité des frames.

Essayer de bien maitriser les macros de ce classeur, car une évolution sur la réglementation du temps de travail pourrait vous obliger à modifier les macros (userform5 ) toutes les "combobox change" avec des horaires entre guillemets.
VB:
Private Sub Combobox3_change()
On Error Resume Next
TextBox21 = ComboBox3
TextBox22 = "12:00"
TextBox301 = "08:00"
TextBox23 = CDate(TextBox22) - CDate(TextBox21)
ComboBox3.Value = Format(ComboBox3.Value, "hh:mm")
ComboBox4_Change
End Sub

re chti160
j'ai tenu compte de tes macros, effectivement, c'est plus clair.
tu nous présentes dans le fil 72, une solution intéressante à inclure dans le classeur, donc nous attendons impatiemment 😇
cdt
galougalou
Re,

Youhouuu, ton fichier ne me renvoie plus aucune erreur et même sur mon ordi professionnel, c'est parfait bien joué !! Vive les lèves tôt 🤣
 

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 852
Membres
103 005
dernier inscrit
gilles.hery