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.
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...
Bas c'est exactement le même fichier que celui du post 22, j'avais modifié les macros mais je n'ai enregistré aucune modification donc cela reste le même.
Oui, je sais que le problème vient soit de ma session, soit de mon ordi, soit du serveur LAN, soit des paramètres de l'ordinateur. Je verrais si cela fonctionne avec mon ordi personnel.
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.
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.
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
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
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
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