Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Gestion heure de RDV

cp4

XLDnaute Barbatruc
Bonsoir,
Suite à une discussion, je voudrais gérer des prises de RDV. Je suis confronté au problème suivant:
La plage horaire des RDV est de 8h à 18h (soit 11 RDV max par jour)
Pour un RDV d'urgence le jour même, on considère qu'un délai de 45mn est suffisant pour arriver,
ex: il est 9h10, on peut donc lui donner 1 RDV pour 10H. Mais dès 9h16, impossible de lui fixer RDV pour l'heure suivante 10H. Par contre possible pour d'autres heures si libres.
Le code ci-dessous ne donne pas le résultat escompté. Merci de corriger mon erreur. Ouvert à tout autre idée.
VB:
Sub essai_heure()
   DerHeure = 17 'valeur à modifier pour test
   If Hour(Time) <= DerHeure And Minute(Time) <= 15 Then
      Debug.Print "Il est " & Time & " Prise de RDV possible"
   Else
      Debug.Print "Il est " & Time & " Plus de prise de RDV possible"
   End If
End Sub
Joyeux Noël.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir CP4,
Je pense que le pb vient du AND.
S'il est 15:30 alors Hour(Time) <= DerHeure est VRAI mais Minute(Time) <= 15 est FAUx, donc le résultat est FAUX.
Je pense qu'il faut regarder les minutes que si la condition Hauer est Vrai, comme ceci par ex :
VB:
Sub essai_heure()
   DerHeure = 18 'valeur à modifier pour test
   If Hour(Time) >= DerHeure Then
        If Minute(Time) <= 15 Then
            Debug.Print "Il est " & Time & " Prise de RDV possible"
        Else
            Debug.Print "Il est " & Time & " Plus de prise de RDV possible"
        End If
   End If
End Sub
 

cp4

XLDnaute Barbatruc
Bonsoir @sylvanu ,

Je te remercie. En effet, il y a quelque chose qui cloche dans mon code.
Je viens de tester le tien mais le bon résultat n'est pas au RDV.

Résultat ci-dessus pour DerHeure=18 alors qu'il est 19H. Normalement plus de RDV possible.
Merci beaucoup.
Bonne soirée.
 

cp4

XLDnaute Barbatruc
Je me suis peut-être mal exprimé. Je crois avoir trouvé une solution.
VB:
Sub essai_heure()
   DerHeure = 20   'valeur à modifier pour test
   If Hour(Time) + Minute(Time) / 60 <= DerHeure - (45 / 60) Then
      Debug.Print "Il est " & Time & " Prise de RDV possible"
   Else
      Debug.Print "Il est " & Time & " Plus de prise de RDV possible"
   End If
End Sub
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir CP4 , longtemps que l'on s'est croisé !!!

Ce n'est pas une histoire de VBA mais de Maths ( ici le matheux !)
donc tout simple tu ajoutes 45 à tes minutes de base et si sup à 60 > impossible
je viens juste de voir ta réponse mais pas testé
donc à moins de n'avoir pas compris >
Code:
Sub essai_heure()

     Ac = Minute(Time) ' horaire décidé , d'une cellule ????
     dif = Ac + 45
   If dif <= 60 - Ac Then
        
            MsgBox "Il est " & Time & " Prise de RDV possible"
        Else
            MsgBox "Il est " & Time & " Plus de prise de RDV possible avant " & Hour(Time) + 1 & "H"
        End If
  
End Sub
Je viens de tester !! à 20h25 OK
 

cp4

XLDnaute Barbatruc
Bonsoir @herve62 ,
En effet, ça fait un moment que l'on ne s'est pas croisé ( merci pour ton aide).
En fait, c'est pour alimenter une combobox avec les plages horaires libres.
Lorsque les RDV sont pris pour un autre jour (qu'aujourd'hui), en utilisant 2 dictionnaires pour récupérer les plages non prises.
Mais un peu plus compliqué, pour les RDV urgents (le jour même) d'où cette difficulté exposée dans mon 1er post.
Merci mais ton code ne répond pas exactement, j'ai saisi 22 dans une cellule et voici le résultat (il est 20h50)

Bonne soirée.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Ce n'est pas une histoire de VBA mais de Maths ( ici le matheux !)
donc tout simple tu ajoutes 45 à tes minutes de base et si sup à 60 > impossible
Tordu l'esprit vous avez, jeune Padawan...

Pourquoi ajouter 45 et comparer à 60 ???
Pourquoi pas ajouter 17 et comparer à 32 ?...
Il suffit de directement comparer à 15. Nan ?



Un début de proposition :
VB:
Sub Test_1()
'
Dim T As Date, HeureRDV As Date
Dim MonHeure As Integer, MesMinutes As Integer, ProchainRDV As Integer

    T = Now
    MonHeure = Hour(T)
    MesMinutes = Minute(T)

    ProchainRDV = MonHeure + 1
    If MesMinutes > 15 Then ProchainRDV = ProchainRDV + 1

    If ProchainRDV > 18 Then ProchainRDV = 8
    HeureRDV = ProchainRDV / 24

    MsgBox "On est le " & Format(T, "dd/mm/yyyy") & vbCrLf & "il est " & Format(T, "hh""h""mm") & vbCrLf & vbCrLf & "RDV : " & Format(HeureRDV, "hh:mm")

End Sub

Une autre proposition, avec la date complète :
VB:
Sub Test_2()
'
Dim T As Date, ProchainRDV As Date

    T = Now

    If Minute(T) > 15 Then
        ProchainRDV = T + 1 / 12
    Else
        ProchainRDV = T + 1 / 24
    End If

    If Hour(ProchainRDV) < 8 Then ProchainRDV = Int(ProchainRDV) + 1 / 3
    If Hour(ProchainRDV) > 18 Then ProchainRDV = Int(ProchainRDV + 1) + 1 / 3

    MsgBox "On est le " & Format(T, "dd/mm/yyyy") & vbCrLf & "il est " & Format(T, "hh""h""mm") & vbCrLf & vbCrLf & "RDV : " & Format(ProchainRDV, "dd/mm/yyyy hh:mm")

End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Tordu l'esprit vous avez, jeune Padawan...
donc pas d'expérience , à 68 piges ???? ( et bac +6)
??? T'es pas un peu déjanté ??? je vais au plus simple !!! ( ex prof de maths au début ) et toi toujours à critiquer !! .T'as pas un peu plus compliqué ??? là on sent l'informaticien du 30éme siècle !!!
Moi j'ai appris que, si selon un nombre donné ( de 1 à 59) la condition est que la somme à ne pas dépasser est de 45 ..... ben je fais le nombre moins 45 !! ?? ( pas besoin d'excel ou vba) c'est du B A , BA de logique
@cp4
Désolé , je corrige au PLUS SIMPLE j'ai mis un horaire ( format heure) en A1 et il faut juste faire +2 au lieu de +1 ; encore désolé mais si après 23h c'est plus correct !!!! mais cela ne doit pas se produire ?

VB:
Sub essai_heure()

     Ac = Minute(Sheets("feuil1").Cells(1, 1)) ' horaire décidé , d'une cellule ????
     dif = Ac + 45
   If dif <= 60 - Ac Then
        
            MsgBox "Il est " & Time & " Prise de RDV possible"
        Else
            MsgBox "Il est " & Time & " Plus de prise de RDV possible avant " & Hour(Time) + 2 & "H"
        End If
 
End Sub

PS @TooFatBoy : pour l'appli de saisie intuitive en octobre ou tu m'as suivi .... sans succès ? je l'ai terminé en privé ( par mail ) et super satisfait l'entreprise m'a envoyé un super colis de pinard pour noël
 

TooFatBoy

XLDnaute Barbatruc
donc pas d'expérience , à 68 piges ???? ( et bac +6) ???
Ca fait peur... Les 68 "piges" ont l'air d'avoir pris le dessus sur le "bac + 6"...

T'es pas un peu déjanté ??? je vais au plus simple !!! ( ex prof de maths au début ) et toi toujours à critiquer !! .T'as pas un peu plus compliqué ??? là on sent l'informaticien du 30éme siècle !!!
T'es un pneu agressif man, surtout pour un 25 décembre, jour de Noël, de paix et de joie.


PS @TooFatBoy : pour l'appli de saisie intuitive en octobre ou tu m'as suivi .... sans succès ? je l'ai terminé en privé ( par mail ) et super satisfait l'entreprise m'a envoyé un super colis de pinard pour noël
Je ne me souviens pas.
[edit]
J'ai recherché et je pense que tu parles de ce fil et effectivement, j'avais oublié mais maintenant je me souviens que tu avais posté un fichier en disant que tout fonctionnait comme tu voulais dans ledit fichier, alors qu'il n'y avait rien qui fonctionnait dedans, et au lieu de continuer de le développer avec nous tu avais préféré quitter le fil.
Content pour toi, et pour les gens pour lesquels tu développais le fichier, que tu aies réussi à trouver une solution.

Dommage que tu n'aies pas posté la solution dans le fil (c'est quand même le but d'un forum que de partager des solutions ).
[/edit]
L'abus d'alcool est mauvais pour la santé, alors c'est à consommer avec modération.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Même au boulot avant j'ai toujours dit ce que je pensais. On se refait pas
Je comprends parfaitement, puisque je n'ai pu moi-même m'empêcher de te faire remarquer, avec un clin d'œil, que c'était "tordu" (mais "tortueux" est en fait mieux adapté) de comparer A+45 à 60, alors qu'il suffisait de comparer A à 15 (c'est-à-dire 60-45).

Malgré la tournure de la phrase qui se voulait rigolote et malgré le clin d'œil, tu l'as mal pris alors que ce n'était pas pour être méchant, ou pour dire que j'étais plus fort, ou quoi que ce soit de ce genre. C'était juste pour partager ma vision du truc, qui simplifiait les choses.


Bonne soirée à tous
 

cp4

XLDnaute Barbatruc
Bonjour @herve62 , @TooFatBoy , @ChTi160

Un peu houleuse ma petite discussion. C'est un peu de ma faute.
En effet, j'ai eu la flemme de faire un fichier à partir du fichier initial pour illustrer ce problème (beaucoup de choses à supprimer).
Et, j'ai mal exposé le problème. Je voulais juste trouver une solution pour les prises de RDV du jour même.
Les RDV sont enregistrés sur une feuille (tableau) et sur une autre feuille liste des plages horaires (de 8h à 18h, rdv en début d'heure uniquement)).
Pour alimenter la combobox des plages horaires, une comparaison entre la liste et les RDV déjà pris à la date concernée (une autre combobox). Jusque là, c'est bon.
Le souci est pour la prise de RDV le jour même. En considérant, qu'un délai de 45mn est suffisant pour se présenter au RDV. Par exemple: il est présentement 11h06, donc si la plage de 12h est libre, donc 12h-11h06=54mn donc > à 45mn implique prise de RDV possible sinon pas possible. Le code de @herve62, mes premiers tests son concluants.
@TooFatBoy : je n'ai pas effectué beaucoup de tests avec tes codes.

J'espère pouvoir avancer avec vos codes. Sinon, je monte un fichier et reviendrai vers vous.

Merci beaucoup. Bonne semaine à vous.

Edit: J'ai été un peu bousculé pour les courses que j'ai oublié de poster mon message rédigé ce matin. Pardon!
 

TooFatBoy

XLDnaute Barbatruc
@TooFatBoy : je n'ai pas effectué beaucoup de tests avec tes codes.
Pas grave, puisqu'ils ne correspondent pas exactement à ce que tu viens de dire : RDV le jour-même, alors que mes codes indiquent, 08h00 pour le 1er, la date du lendemain 08h00 pour le 2e, quand il n'y a plus de RDV possible le jour-même.


Du coup je te propose simplement ceci :
VB:
Sub Test_3()
    DerHeure = 18
    T = Time
    If (Hour(T) + 1 - (Minute(T) > 15)) > DerHeure Then
        Debug.Print "Il est " & T & " Plus de prise de RDV possible"
    Else
        Debug.Print "Il est " & T & " Prise de RDV possible"
    End If
End Sub
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…