IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

Contrôle de l'heure [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Account Manager
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Account Manager
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 62
    Points
    62
    Par défaut Contrôle de l'heure
    Bonjour la communauté,

    J'ai un petit problème pour finaliser ma macro. Je n'autorise l'utilisation du programme qu'entre certaines heures
    entre heure1 et heure2
    entre heure3 et heure4
    entre heure5 et heure 6

    J'ai mis en place une fonction mais cela ne marche pas, une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Function CtrlHeure() As Boolean
     
    'Déclaration des variables
    Dim wb1 As Workbook
    Dim wsTechnique As Worksheet
     
    'Déclarations des raccourcis
    Set wb1 = Workbooks("Matrice FATCA.xlsm")
    Set wsTechnique = wb1.Worksheets("Technique")
     
    Dim heureactuelle As Date
    Dim heure1 As Date
    Dim heure2 As Date
    Dim heure3 As Date
    Dim heure4 As Date
    Dim heure5 As Date
    Dim heure6 As Date
     
    heureactuelle = Format(Time, "hh:mm:ss")
     
    heure1 = Format(wsTechnique.Range("q4"), "hh:mm:ss")
    heure2 = Format(wsTechnique.Range("r4"), "hh:mm:ss")
    heure3 = Format(wsTechnique.Range("q5"), "hh:mm:ss")
    heure4 = Format(wsTechnique.Range("r5"), "hh:mm:ss")
    heure5 = Format(wsTechnique.Range("q6"), "hh:mm:ss")
    heure6 = Format(wsTechnique.Range("r6"), "hh:mm:ss")
     
    Select Case heureactuelle
        Case heureactuelle > heure1 And heureactuelle < heure2
            CtrlHeure = True
        Case heureactuelle > heure3 And heureactuelle < heure4
            CtrlHeure = True
        Case heureactuelle > heure5 And heureactuelle < heure6
            CtrlHeure = True
        Case Else
            CtrlHeure = False
    End Select
     
    End Function
    D'avance, un grand merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est l'utilisation du Select Case qui n'est pas correcte.
    Ce n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Case heureactuelle > heure1 And heureactuelle < heure2
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Case Is > heure1, Is < heure2
    et sauf erreur de ma part, la conversion en format est inutile
    Ceci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    heureactuelle = Time   ' Format(Time, "hh:mm:ss")
    heure1 = wsTechnique.Range("q4")    ' Format(wsTechnique.Range("q4"), "hh:mm:ss")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre du Club
    Homme Profil pro
    Account Manager
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Account Manager
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 62
    Points
    62
    Par défaut Select case ... avec un AND
    Bonjour Philippe et merci pour ta réponse,

    Merci pour la révision syntaxique du case, cela me parait plus cohérent.

    Le problème que je rencontre avec ceci ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Case Is > heure1, Is < heure2
    ... est qu'il ne signifie pas entre ces deux heures, c'est un OR et non un AND

    @+

  4. #4
    Membre du Club
    Homme Profil pro
    Account Manager
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Account Manager
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 62
    Points
    62
    Par défaut Case heure1 To heure2
    Cela fonctionne avec cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case heureactuelle
        Case heure1 To heure2
            CtrlHeure = True
        Case heure3 To heure4
            CtrlHeure = True
        Case heure5 To heure6
            CtrlHeure = True
        Case Else
            CtrlHeure = False
    End Select
    Un grand merci pour votre aide, mon utilisation du case était effectivement pas correcte

    Au plaisir

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu peux réutiliser la logique de Philippe afin de réduire ton nombre de Case : le regroupement des cas qui génèrent la même action

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case heureactuelle
        Case heure1 To heure2, heure3 To heure4, heure5 To heure6
            MsgBox "autorisé"
        Case Else
            MsgBox "interdit"
    End Select

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour Joe,
    Bien vu, nettement mieux
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre du Club
    Homme Profil pro
    Account Manager
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Account Manager
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 62
    Points
    62
    Par défaut Nickel
    Effectivement, c'est nickel,

    Merci beaucoup à vous deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] contrôle des heures dans une formule
    Par pilounet54 dans le forum Excel
    Réponses: 2
    Dernier message: 03/05/2013, 12h09
  2. Réponses: 2
    Dernier message: 21/01/2011, 20h11
  3. Requête complexe de contrôle d'heure
    Par lylandra6 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/09/2008, 01h15
  4. Contrôle de validité d'une heure
    Par michaeljeru dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/08/2008, 14h10
  5. [Contrôle d'accès] Entre X heure et Y heure
    Par Tuxico dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/06/2008, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo