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

VB 6 et antérieur Discussion :

[VB]Enlever 1 jour à une date si heure est comprise entre...


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut [VB]Enlever 1 jour à une date si heure est comprise entre...
    Bonjour à tous,

    J'amerais enlever 1 jour à une date lorsque mon heure est compris entre 00h00 et 06h00 du matin.

    Sachant que l'heure s'affiche dans un label et la date s'affiche dans un autre label.

    Pouvez-vous m'aider?

    Merci à tous.

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Utilise la fonction DateAdd().

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Peux-tu me dire comment tu fais?

    Merci d'avance.

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    BEn alors? Regarde l'aide en ligne. Tu spécifies ta date de départ, l'unité que tu veux modifier ("d" pour "jour"), et la variation (-1 pour reitrer un jour).

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Un extrait de MSDN :

    DateAdd, fonction


    Renvoie une valeur de type Variant (Date) contenant une date à laquelle un intervalle de temps spécifié a été ajouté.

    Syntaxe

    DateAdd(interval, number, date)

    La syntaxe de la fonction DateAdd comprend lesarguments nommés suivants :

    Élément Description
    interval Expression de chaîne correspondant à l'intervalle de temps à ajouter.
    number Expression numérique correspondant au nombre d'intervalles à ajouter. Peut être positive (pour obtenir des dates dans le futur) ou négative (pour obtenir des dates dans le passé).
    date Variant (Date) ou caractère littéral représentant la date à laquelle l'intervalle est ajouté.


    Valeurs

    L'argument interval peut prendre les valeurs suivantes :

    Valeur Description
    yyyy Année
    q Trimestre
    m Mois
    y Jour de l'année
    d Jour
    w Jour de la semaine
    ww Semaine
    h Heure
    n Minute
    s Seconde


    Remarques

    Utilisez la fonction DateAdd pour ajouter ou soustraire à une date un intervalle de temps spécifié. Par exemple, utilisez DateAdd pour calculer une date située à 30 jours ou une heure située à 45 minutes de l'heure présente.

    Pour ajouter des jours à la valeur de l'argument date, vous pouvez utiliser les valeurs Jour de l'année ("y"), Jour ("d") ou Jour de la semaine ("w").

    La fonction DateAdd ne renvoie jamais de date incorrecte. Dans l'exemple suivant, un mois est ajouté à la date du 31 janvier :

    DateAdd("m", 1, "31-Jan-95")

    Dans ce cas, DateAdd renvoie 28/02/95, et non 31/02/95. Si l'argument date a pour valeur le 31-Jan-96, la date 29/02/96 est renvoyée car 1996 est une année bissextile.

    Si la date calculée devait être antérieure à l'année 100 (c'est-à-dire, si vous retirez un nombre d'années supérieur à celui indiqué dans l'argument date), une erreur se produit.

    Si l'argument number n'est pas une valeur de typeLong, il est arrondi au nombre entier le plus proche avant d'être évalué.

    Note Le format de la valeur renvoyée correspondant à la fonction DateAdd est déterminé par les valeurs du Panneau de configuration, non par le format qui est passé à l'argument date.

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    merci pour la reponse mais comment dire :

    Si Label8 est compris entre "00:00" et "06:00"" alors
    Enlever un jour à une date 'Pour cette expression là je penses que c'est bon
    Fin Si


    Merci d'avance.

  7. #7
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Encore un peu de lecture :

    DateDiff, fonction


    Renvoie une valeur de type Variant (Long) indiquant le nombre d'intervalles de temps entre deux dates données.

    Syntaxe

    DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

    La syntaxe de la fonction DateDiff comprend lesarguments nommés suivants :

    Élément Description
    interval Expression de chaîne correspondant à l'intervalle de temps utilisé pour calculer la différence entre date1 et date2.
    date1, date2 De type Variant (Date), représentent les deux dates utilisées dans le calcul.
    firstdayofweek Facultatif.Constante précisant le premier jour de la semaine. Si aucune valeur n'est précisée, la valeur par défaut est dimanche.
    Firstweekofyear Facultatif. Constante précisant la première semaine de l'année. Si aucune valeur n'est précisée, la première semaine est par défaut celle du 1er janvier.


    Valeurs

    L'argument interval peut prendre les valeurs suivantes :

    Valeur Description
    yyyy Année
    q Trimestre
    m Mois
    y Jour de l'année
    d Jour
    w Jour de la semaine
    ww Semaine
    h Heure
    n Minute
    s Seconde


    L'argument firstdayofweek peut prendre les valeurs suivantes :

    Constante Valeur Description
    vbUseSystem 0 Utilise le paramètre de l'API NLS.
    vbSunday 1 Dimanche (valeur par défaut)
    vbMonday 2 Lundi
    vbTuesday 3 Mardi
    vbWednesday 4 Mercredi
    vbThursday 5 Jeudi
    vbFriday 6 Vendredi
    vbSaturday 7 Samedi

    Constante Valeur Description
    vbUseSystem 0 Utilise le paramètre de l'API NLS.
    vbFirstJan1 1 Commencer par la semaine du 1er janvier (valeur par défaut).
    vbFirstFourDays 2 Commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle.
    vbFirstFullWeek 3 Commencer par la première semaine complète de l'année.


    Remarques

    Utilisez la fonction DateDiff pour déterminer le nombre d'intervalles de temps spécifiés entre deux dates. Par exemple, utilisez DateDiff pour calculer le nombre de jours entre deux dates ou le nombre de semaines entre la date d'aujourd'hui et la fin de l'année.

    Pour calculer le nombre de jours entre date1 et date2, vous pouvez utiliser les valeurs Jour de l'année ("y") ou Jour ("d"). Si l'argument interval est Jour de la semaine ("w"), DateDiff renvoie le nombre de semaines entre les deux dates. Si date1 tombe un lundi, DateDiff calcule le nombre de lundi jusqu'à date2. La valeur date2 est prise en compte, mais pas la valeur date1. Si l'argument interval est Semaine ("ww"), la fonction DateDiff renvoie le nombre de semaines calendaires entre les deux dates. Le nombre de dimanches entre date1 et date2 est calculé. DateDiff prend en compte date2 si cette date tombe un dimanche, mais pas date1, même s'il s'agit également d'un dimanche.

    Si date1 est postérieure à date2, la fonction DateDiff renvoie un nombre négatif.

    L'argument firstdayofweek a une incidence sur les calculs qui utilisent les symboles d'intervalle "w" et "ww".

    Si date1 ou date2 est unlittéral date, l'année spécifiée devient un élément permanent de la date. Toutefois, si date1 ou date2 apparaît entre guillemets (" ") et si vous n'indiquez pas l'année, l'année en cours est insérée dans le code chaque fois que l'expression date1 ou date2 est évaluée. Vous pouvez ainsi écrire du code qui sera réutilisable au fil des années.

    Lors de la comparaison des dates 31 décembre et 1er janvier de l'année suivante, DateDiff avec la valeur Année ("yyyy") renvoie 1, même si la différence est seulement d'un jour.

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Non ce n'est pas ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Label8.Caption est compris entre "00:00:00" et  "06:00:00" Then
    dat = Format(Date, "mm/dd/yy")
    Label9.Caption = DateAdd(d, -1, dat)
    Else
    Label9.Caption = dat
    End If
    C'est un code de ce genre là que j'aimerais avoir.

    Mais je n'arrive pas à faire l'instruction du si.

    Merci d'avance

  9. #9
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ça t'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub test2()
        MsgBox (Time)
        Heure = Hour(Time)
        MsgBox (Heure)
    End Sub

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Non désolé je ne vois où tu veux en venir.

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Mon Label16.Caption = DateAdd(d, -1, dat) ne marche pas car dat est de forme : Format(Date, "dddd d mmmm yyyy").

    Pouvez-vous m'aider?

    Merci d'avance.

  12. #12
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Regarde ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub test2()
        UserForm1.Show vbModeless
        Dim MyTime As Date
        MyTime = CDate(UserForm1.Label1.Caption)
        MsgBox (Hour(MyTime))
        If Hour(MyTime) >= 8 Then
            MsgBox ("Il est plus de huit heure!!")
        End If
     
    End Sub

  13. #13
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    je n'arrive pas à tester ton code.

    Peux-tu me dire où il faut que je le mettre...

    Merci d'avance.

  14. #14
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    C'est bon j'ai reussi mais comment l'adapter à mon code?

  15. #15
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    En faisant un truc dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Test()
        Dim MyTime As Date
        Dim MyDate As Date
        MyTime = CDate(Label8.Caption)
        MyDate = CDate(Label9.Caption)
        If MyTime < 5 Then 'de 00:00:00 à 05::59:59
            MyDate = DateAdd("d", -1, MyDate)
            Label9.Caption = MyDate
        End If
    End Sub
    Ça doit commencer à ressembler à ce que tu veux faire, non?

  16. #16
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    C'est bon j'ai trouvé mais j'ai un problème sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label6.Caption = DateAdd(d, -1, dat)
    Il me dit type incompatible et le d n'a rien dedans.

    Sachant que Label6 et dat sont de la format "dddd d mmmm yyyy", cela donne : vendredi 20 janvier 2006. Comment faire pour enlever un jour et que cela donne jeudi 19 janvier 2006.

    Merci d'avance.

  17. #17
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ce n'est pas un problème de format, c'est un problème de type (Integer, String, Long,...)
    La fonction DateAdd prend un "Date" en entrée, et donne un "Date" en sortie. Si tu as des "String", tu dois les convertir en "Date" avec la fonction "CDate", comme je l'ai fait dans mon exemple corrigé à la fin de la page 1 de ce post.

  18. #18
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    C'est bon ça marche.

    et à tous le monde.

    Bonne journée

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

Discussions similaires

  1. Enlever des jours à une date
    Par borgfabr dans le forum VBA Word
    Réponses: 5
    Dernier message: 08/03/2013, 14h08
  2. [Dates] enlever 8 jours à une date
    Par viny dans le forum Langage
    Réponses: 10
    Dernier message: 04/01/2008, 15h28
  3. Réponses: 7
    Dernier message: 01/06/2007, 14h52
  4. Réponses: 2
    Dernier message: 03/01/2006, 14h58
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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