Le poste selon plage horaire

Résolu/Fermé
Liores - 24 juil. 2016 à 16:23
Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 25 juil. 2016 à 02:58
Bonjour,

Je traite des données de type date dans la cellule A1 extraite d'un logiciel.

Je souhaite déterminer selon l'heure si je suis en P1 (5h00 à 13h00), en P2 (13h00 à 21h00) ou en P3 (21h00 à 05h00). (C'est le mot que je dois ressortir dans la cellule A4)

En B1 et C1 j'ai juste un =A1 avec un format de cellule différent pour en ressortir l'heure et le jour de semaine.

Je me casse les dents là dessus depuis un petit moment.

Mon code VBA :

 
Sub TypeDePoste()

If Range("B2") > "06:00" And Range("B2") < "14:00" Then
Range("D2") = "P1"
ElseIf Range("B2") > "14:00" And Range("B2") < "22:00" Then
Range("D2") = "P2"
Else
Range("D2") = "P3"


End If

End Sub

Le problème est que mon code ne ressort que "P3". Je pense donc qu'il ne fait pas grand chose en amont...
J'aimerais également que cela se fasse sur toutes les lignes. J'ai un doute sur la manière de procéder. Mais je cherche une solution dès la fin de ce post.

Merci d'avance ;)

3 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
24 juil. 2016 à 16:59
Bonjour Liores

1) tu dis avoir des données de type date en A1 et ta macro va chercher du texte, qu'elle ne trouve pas forcément

2) pourquoi passer par une macro alors qu'une simple formule en D1 suffit et peut être ensuite étirée en dessous
formule du style :
=SI(ET(HEURE(A1)>5;HEURE(A1)<=13);"P1";SI(ET(HEURE(A1)>13;HEURE(A1)<=21);"P2";"P3"))

Cdlmnt
Via
1
Wow!

Magnifique ca fait parfaitement le travail. Je n'ai pas réussi à faire la même chose.

Merci beaucoup !!
0
Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 095
Modifié par Raymond PENTIER le 25/07/2016 à 03:00
Excellente formule, qu'on peut même encore simplifier :
=SI(HEURE(A1)<5;"P3";SI(HEURE(A1)<13;"P1";SI(HEURE(A1)<21;"P2"; "P3")))


C'est bien, la retraite ! Surtout aux Antilles ... :-) 
Raymond (INSA, AFPA, CF/R)
0