condition si valeur dans une plage de valeur

Phillip

XLDnaute Occasionnel
Bonjour,

Dans un tableau horaire, un résultat est donné si l'heure est comprise entre 6h du matin et 21 heures, et un autre résultat est donné si l'heure est comprise entre 21 heures et 6 heures du matin

Sachant que 6h vaut 0.25 et 21h vaut 0.875 j'ai tenté : IF(AND(C3<0,875;C3>0,25)....

Seulement, si l'heure est après minuit mais avant 6heures (exemple , mon heure est égale à 0.07 pour 1h45 du matin) ça ne marche pas car 0.07 est bien inférieur à 0.875 !!!

Des idées ?

Merci !!
 

Baside

XLDnaute Impliqué
Bonjour Philip, le Forum,

Sur les feuilles, les formules sont en Français style:

=SI(ET(A1>=142;A1<=300);'OK'; 'Conditions non remplies')

Et en VBA les formules sont en Anglais avec des If et And...

Bonne Journée, Baside
 
R

robby

Guest
essaye ca:

Sub timedetect()
a = Range('A1').Value
If a >= 0.25 Then
If a < 0.875 Then
Range('B2').Value = 'erreur compris entre 6h et 21h'
ElseIf a >= 0.875 Then
Range('B2').Value = 'erreur compris entre 21 et 6h'
End If
ElseIf a < 0.25 Then
Range('B2').Value = 'erreur compris entre 21 et 6h'
End If
End Sub
 

Phillip

XLDnaute Occasionnel
Bonjour,

merci Robby, je vais m'inspirer de ton post pour créer une formule personnalisée.

Baside, j'ai uen version d'excel en anglais donc mes formules contiennent bien des if et des and.

André, Je vais tester, mais je ne crois pas que cela marche dans tous les cas...

merci à tous en tous cas...
 

Phillip

XLDnaute Occasionnel
Bonjour,

Suite à vos différents conseils, je me suis orienté vers une fonction personnalisée :

Function timetotime(JourJ, heureH)

valeurheure = heureH.Value
jourferie = 0
dimanche = 0
dimanche = Weekday(JourJ)
JourJ.NumberFormat = 'General'
jourferie = JourJ.Value
''test du jour férié ou dimanche
If jourferie = 38477 Or jourferie = 38547 Or jourferie = 38579 Or jourferie = 38657 Or jourferie = 38667 Or dimanche = 1 Then
'test entre 21h et minuit, puis avant 6h du matin
If 0 < valeurheure And valeurheure < 0.25 Or 0.875 < valeurheure And valeurheure < 1 Then
timetotime = 2.1
Else: timetotime = 2
End If

'Si on est pas un jour férié ou dimanche
ElseIf 0 < valeurheure And valeurheure < 0.25 Or 0.875 < valeurheure And valeurheure < 1 Then
timetotime = 1.5
Else: timetotime = 1.25
End If
jourferie.NumberFormat = 'ddd dd/mm/yyyy'


End Function
Or, mon résultat, donc timetotime ne donne aucun résultat (#valeur') alors qu'exactement la même sub, avec des cellules explicites marche !!

Quid ????

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan