For next avec des heures
Bonjour,
Je suis actuellement sur un fichier qui doit gerer les horaires d'une equipe.
Je suis bloqué sur une macro qui doit detecter le nombre de personnel présent à un moment donné de la journée et l'afficher dans un userform.
Mon gros problème vient de la gestion (qd meme un peu hasardeuse) des heures par excel.
En gros j'essaye de faire un
for 5:00 (5h du mat) to 28:00 (le lendemain à 4:00) step 1:00 (1h)
Le code que j'ai fonctionne mais parfois (généralement qd le for next arrive à 17.00), il ne compte plus les personnes qui prennent leur service à heure pile (dans ce cas à 17.00).
Je ne peux malheureusement envoyer de fichier, la politique internet de ma boite m'interdit tout upload.
labelle = 1 'nom du label dans l'userform
quar = 0.25/24 ' quart d'heure
For heure = 5 / 24 To 28 / 24 Step 1 / 24
nbstaff = 0 ' personnel travaillant à heure pile
nbstaff2 = 0 ' personnel travaillant à heure + 15 min
nbstaff3 = 0 ' personnel travaillant à heure + 30 min
nbstaff4 = 0 ' personnel travaillant à heure + 45 min
For staff = 37 To 461 Step 10 ' la ligne d'horaire de chaque personne
If ActiveSheet.Cells(staff, 6) <> "" And ActiveSheet.Cells(staff, 7) <> "" Then '(staff,6) est l'horaire de prise de service et (staff,7) l'horaire de fin
If heure >= ActiveSheet.Cells(staff, 6) And heure +quar <= ActiveSheet.Cells(staff, 7) Then
nbstaff = nbstaff + 1
End If
If heure + quar >= ActiveSheet.Cells(staff, 6) And heure + quar *2<= ActiveSheet.Cells(staff, 7) Then
nbstaff2 = nbstaff2 + 1
End If
If heure + quar * 2 >= ActiveSheet.Cells(staff, 6) And heure + quar * 3 <= ActiveSheet.Cells(staff, 7) Then
nbstaff3 = nbstaff3 + 1
End If
If heure + quar * 3 >= ActiveSheet.Cells(staff, 6) And heure + quar * 4 <= ActiveSheet.Cells(staff, 7) Then
nbstaff4 = nbstaff4 + 1
End If
End If
next
UserForm11.Controls("Label" & labelle) = Format(heure, "hh:mm") & vbTab & nbstaff & vbLf & Format(heure + quar, "hh:mm") & vbTab & nbstaff2 & vbLf & Format(heure + quar * 2, "hh:mm") & vbTab & nbstaff3 & vbLf & Format(heure + quar * 3, "hh:mm") & vbTab & nbstaff4
labelle = labelle + 1
nextMerci pour toute aide.
Sebou
Bonjour,
Le code que j'ai fonctionne mais parfois (généralement qd le for next arrive à 17.00), il ne compte plus les personnes qui prennent leur service à heure pile (dans ce cas à 17.00).
Sans fichier ça ne va pas être simple mais il y a souvent des problèmes d'arrondis avec les heures.
Essaie en arrondissant des 2 cotés à 10 chiffres après la virgule.
eric
Effectivement en utilisant round(valeur,10) sur toutes les valeurs que la macro compare les calculs sont corrects.... C'etait si simple ><
Merci pour la réponse rapide et pour m'avoir empeché de commettre l'irreparable ^^