Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Déduire créneau via une heure


Sujet :

Excel

  1. #1
    Membre du Club
    Déduire créneau via une heure
    Bonjour

    Je crois que tout est dans le titre mais un peu plus d'explication serait bien.


    A partir d'un horaire que j'ai dans une colonne, je voudrais en déduire un créneau horaire relativement simple dans une autre colonne
    Exemple :
    10H53 donne un créneau 10H00 - 11H00
    13H24 donne un créneau 13H00 - 14H00
    23H47 donne un créneau 13H00 - 14H00
    Etc...

    Sans VBA, peut-on le faire via une formule ? avec l'aide d'une table de correspondance peut être...Un rechercheV....?

    C'est le côté horaire représenté par un nombre que je ne maîtrise pas bien. Mais je continue à chercher de on côté aussi.

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Salut

    Ca semblait facile comme question, mais cet exemple vient chambouler mes certitudes
    Citation Envoyé par francois78 Voir le message

    23H47 donne un créneau 13H00 - 14H00
    Peut on avoir confirmation que c'est une erreur avant de proposer des solutions de formules stp ?
    Cycle de vie d'un bon programme :
    1/ ca fonctionne 2/ ca s'optimise 3/ ca se refactorise

    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre expert
    Inférieur:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =PLANCHER(A1;1/24)


    Supérieur:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =ARRONDI.SUP(A1*24;0)/24


    Si j'ai bien lu sans tenir compte du lapsus clavis.

  4. #4
    Membre extrêmement actif
    Bonjour

    Ceci (exemple de formule en B1 pour traiter A1)?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =TEXTE(HEURE(A1);"0#")&"H00 - "&SI(HEURE(A1)<23;TEXTE(HEURE(A1)+1;"0#");"00")&"H00"


    Sans précisions de limites de ta part, il a bien fallu prévoir le passage d'un jour à l'autre
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Responsable
    Office & Excel

    Salut.

    Je propose =TEXTE(A1;"hh""h00""") & "-" & TEXTE(A1+1/24;"hh""h00""")






    Si on veut "24h00" pour la tranche "23h00-24h00", on utilise =TEXTE(A1;"hh""h00""") & "-" & TEXTE(A1+1/24;"[hh]""h00""")


    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Expert éminent sénior
    Petite remarque : tout ce qui sera proposé ne fonctionnera que si les heures en question sont de vraies heures et non pas du texte ressemblant à des heure.

    Une solution :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ="Créneau "&TEXTE(HEURE(A1);"00")&"H00 - "&TEXTE(HEURE(A1)+1;"00")&"H00"


    Citation Envoyé par QuestVba Voir le message
    Inférieur:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =PLANCHER(A1;1/24)

    Supérieur:
    Pourquoi avoir associé PLANCHER et ARRONDI.SUP et non pas PLANCHER et PLAFOND ou ARRONDI.SUP et ARRONDI.INF ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre du Club
    Bonjour à tous

    En premier lieu, merci à tous ceux qui ont pris le temps de lire et de proposer des solutions.
    Ensuite, oui, je suis un boulet, il fallait bien lire 23H47 donnant un créneau 23H00 - 24H00 ou 23H00 - 00H00


    Egalement, c'est pas parce que je suis un boulet qu'on doit dire
    Ca semblait facile comme question,



    J'ai donc testé vos solutions
    1. Avec la fonction Plancher et arrondi, soit j'ai pas compris, soit... j'ai pas compris mais ca marche pas
    2. Avec TEXTE(HEURE(A1);"0#")&"H00 - "&SI(HEURE(A1)<23;TEXTE(HEURE(A1)+1;"0#");"00")&"H00"
    3. Avec TEXTE(A1;"hh""h00""") & "-" & TEXTE(A1+1/24;"hh""h00""")
    4. Avec TEXTE(A1;"hh""h00""") & "-" & TEXTE(A1+1/24;"[hh]""h00""") pour afficher 24H00 alors là, quelle que soit l'heure, j'ai une sorte de Gloubi-boulga qui donne "01h00-1044194h00" avec 01H52 comme heure.
    5. Avec "Créneau "&TEXTE(HEURE(A1);"00")&"H00 - "&TEXTE(HEURE(A1)+1;"00")&"H00"


    En tout cas, j'ai plusieurs solutions pour résoudre mon problème "facile" et je remercie tout le monde pour les solutions proposées.

    Je laisse ce message ouvert encore quelques jours au cas où QuestVba et/ou Pierre Fauconnier voudraient apporter quelques compléments.

    Merci à tous

  8. #8
    Responsable
    Office & Excel

    Citation Envoyé par francois78 Voir le message
    [...]
    Avec TEXTE(A1;"hh""h00""") & "-" & TEXTE(A1+1/24;"[hh]""h00""") pour afficher 24H00 alors là, quelle que soit l'heure, j'ai une sorte de Gloubi-boulga qui donne "01h00-1044194h00" avec 01H52 comme heure.[...]
    Je pense que tu as dû mal recopié ma formule, car si tu regardes ma seconde illustration, c'est fonctionnel

    Voici une illustration sur quelques valeurs horaires, dont 01:52 qui "pose problème" chez toi

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre expert
    Salut,

    Un complément. Je suis parti sur un Format d'encodage personnalisé (sans savoir) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    hh"H"mm

    Et donc les formules fonctionnent.



    Citation Envoyé par Menhir
    Pourquoi avoir associé PLANCHER et ARRONDI.SUP et non pas PLANCHER et PLAFOND ou ARRONDI.SUP et ARRONDI.INF ?
    C'était par raccourci et me disant qu'il était possible de découvrir l'autre versant. La prochaine fois, je mettrai les deux solutions (enfin, les quatre).

  10. #10
    Responsable
    Office & Excel

    Le format de l'heure saisie n'intervient pas dans le calcul, puisqu'il ne modifie pas les valeurs dans les cellules. Du moment que la valeur saisie puisse représenter une valeur horaire, la formule doit fonctionner...

    Avec l'idée des plancher et plafond de QuestVBA, on peut avoir la formule suivante (avec ou sans les crochets selon que l'on veut 24:00 ou 00:00)

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre du Club
    Bonjour

    J'ai trouvé pourquoi
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    TEXTE(A2;"hh""h00""")&"-"&TEXTE(A2+1/24;"[hh]""h00""")
    ne fonctionnait pas.

    Cela fonctionne uniquement si la cellule A1 contient une heure et un non une date plus une heure.


    Sinon, le reste c'est parfait pour moi !


    Merci les amis

  12. #12
    Responsable
    Office & Excel

    Arf... Evidemment. Suis-je bête? J'aurais dû y penser, au lieu d'imaginer que tu avais mal recopié la formule.

    Entre le 01/01/1900 à 0h00 et le 12/02/2019 à 02h00, il s'est écoulé 1044194 heures... Et comme [hh] amène à afficher en heures la valeur de la cellule, il y avait effectivement un problème.

    Mea culpa

    Si l'on veut pouvoir saisir la date et l'heure dans la même cellule, la formule doit enlever la date (partie entière de la valeur) et devient =TEXTE(A2-ENT(A2);"hh""h00""")&"-"&TEXTE(A2-ENT(A2)+1/24;"[hh]""h00""").


    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

###raw>template_hook.ano_emploi###