Encore un problème d'horaire
Bonjour à tous,
Je vais essayer d'être clair, désolé d'avance si je m'embrouille.
Alors j'extrais des données d'une base, et j'ai donc une colonne avec une date sous cette forme : 01/10/2017 22:51:53
Mon but est d'affecté un numéro d'équipe en fonction du numéro de semaine, du jour et de l'heure.
Sur mon classeur, j'ai donc quelques formules pour extraire le numéro de semaine, l'heure et le jour. Et je me suis dis que pour comparer les heures, il serait mieux de faire un code VBA. J'ai donc écris ceci :
Sub EQUIPE_AUTO()
With Worksheets("Void")
.Columns("AH").NumberFormat = "hh:mm:ss"
If .Range("AI2").Value = "mar" Or Range("AI2").Value = "mer" Or Range("AI2").Value = "jeu" Or Range("AI2").Value = "ven" Then
If .Range("AH2").Value > "05:00:00" And .Range("AH2").Value <= "13:00:00" Then
.Range("AK2").Value = "1"
ElseIf .Range("AH2").Value > "13:00:00" And .Range("AH2").Value <= "21:00:00" Then
.Range("AK2").Value = "2"
ElseIf .Range("AH2").Value > "21:00:00" And .Range("AH2").Value <= "23:59:59" Then
.Range("AK2").Value = "3"
ElseIf .Range("AH2").Value >= "00:00:00" And .Range("AH2").Value <= "05:00:00" Then
.Range("AK2").Value = "3"
End If
ElseIf .Range("AI2").Value = "sam" Then
If .Range("AH2").Value <= "05:00:00" Then
.Range("AK2").Value = "3"
ElseIf .Range("AH2").Value > "05:00:00" And .Range("AH2").Value <= "17:00:00" Then
.Range("AK2").Value = "4"
ElseIf .Range("AH2").Value > "17:00:00" Then
.Range("AK2").Value = "5"
End If
ElseIf .Range("AI2").Value = "dim" Then
If .Range("AH2").Value <= "05:00:00" Then
.Range("AK2").Value = "5"
ElseIf .Range("AH2").Value > "05:00:00" And .Range("AH2").Value <= "17:00:00" Then
.Range("AK2").Value = "4"
ElseIf .Range("AH2").Value > "17:00:00" Then
.Range("AK2").Value = "5"
End If
ElseIf .Range("AI2").Value = "lun" Then
If .Range("AH2").Value <= "05:00:00" Then
.Range("AK2").Value = "4"
ElseIf .Range("AH2").Value > "05:00:00" And .Range("AH2").Value <= "13:00:00" Then
.Range("AK2").Value = "1"
ElseIf .Range("AH2").Value > "13:00:00" And .Range("AH2").Value <= "21:00:00" Then
.Range("AK2").Value = "2"
ElseIf .Range("AH2").Value > "21:00:00" Then
.Range("AK2").Value = "3"
End If
End If
End With
End Sub
On peut voir que le résultat est 5 et non 4 sur cet exemple. Et au passage j'aimerais que cela marche pour toutes les lignes et non juste pour la première case.
Je me doutes que la comparaison se fait mal à cause du format des heures mais je en sais pas comment résoudre mon problème.
S'il y avait une âme charitable qui à la solution...
Merci d'avance !
Bonjour,
pour comparer des heures avec une chaine représentant un heure utilise TimeValue
If .Range("AH2").Value <= timevalue("05:00:00") Then
pour répéter ce test sur une série de lignes il faut faire une boucle
'au debut de ta macro
for i=2 to 100 '100 = dernière ligne
'ton code, tes tests
' (...)
if.range("AH" & i).value<=timevalue("05:00:00") then
'(...)
'à la fin de tes tests
next i
Merci ça marche parfaitement !