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 !

forum

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 !

Rechercher des sujets similaires à "encore probleme horaire"