Je commence par onglet Param, je pense c'est très bien de rentrer le nombres heures hebdomadaires contractuelles, mais je demande pourquoi il faut heure journalière par semaine. Je pense juste une seule est mieux plutôt rentrer toutes les semaines puisque cela ne change pas.
ok je vais simplifier
Le système est très simple pour ajouter un employé et j'ai vu ça marche très bien, mais si pendant Noël j'ai plus que 6 est-il possible d'ajouter une ligne ou deux dans l'onglet semaine et de supprimer s'il n'y a pas besoin?
ah !! je vais y réfléchir pour adapter le nombre de lignes au strict besoin
Dans l'onglet Semaine enfin, j'ai remarqué le bogue. lorsque je choisis une plage horaire elle se colore et si je déselectionne alors la couleur disparait (c'est normal) mais si je resélectionne alors ça ne marche plus... Je ne sais pas pourquoi, cela fait de façon aléatoire. J'ai pris pris petite video pour vous montrer. Avez-vous l'idée?
ok merci, comme quoi j'ai été un peu trop vite dans le passage à la demi-heure
c'est corrigé
remplace la macro "macro-presence" par
Public plage As Range
Sub presence(ok As Boolean)
Dim cel As Range, ligne As Variant
With Sheets("BdD").ListObjects(1)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For Each cel In plage
If (Cells(cel.Row, "AN") = "" Or Cells(cel.Row, "AN") = 0) And Cells(cel.Row, "B") <> "" Then ' blocage s'il existe un motif d'absence dans la journée
ligne = Sheets("Cache").Cells(cel.Row, cel.Column).Value ' ligne concernée dans la BdD
If ligne = "" Then ' on ajoute un enregistrement dans la BdD
.ListRows.Add
.ListColumns("Nom").DataBodyRange.Rows(.ListRows.Count).Value = Cells(cel.Row, 2)
ici = Cells(cel.Row, "B").End(xlUp).Row
.ListColumns("Date").DataBodyRange.Rows(.ListRows.Count).Value = Cells(ici, 2)
.ListColumns("H").DataBodyRange.Rows(.ListRows.Count).Value = Cells(ici, cel.Column)
.ListColumns("Heures").DataBodyRange.Rows(.ListRows.Count).Value = 0.5
Else ' on change la valeur : 1 devient 0 et 0 devient 0,5
.ListColumns("Heures").DataBodyRange.Rows(ligne).Value = IIf(.ListColumns("Heures").DataBodyRange.Rows(ligne).Value = 0, 0.5, 0)
End If
End If
Next
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End With
End Sub