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

IHM Discussion :

[VBA] Pb de format des dates dans un état


Sujet :

IHM

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    je l'ai rentré à la main car dans la liste déroulante, ya toujours l'année et moi je veux que le jour et le mois.
    Ce format marche très bien quand jj>12

  2. #22
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Dit moi c'est toi qui remplit le contenu du Textbox via ton code ou bien c'est access qui le fait automatiquement ?
    Neilos

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    c'est access: en fait je veux qqchose dans ce genre:

    semaine n-3: du 30/05 au 03/06
    semaine n-2: du 06/06 au 10/06
    semaine n-1: du 13/06 au 17/06
    semaine n: du 20/06 au 24/06

  4. #24
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Oui j'avais compris ce que tu veux.
    Par contre je ne vois pas pourquoi il ne te le mettrait pas au bon format par défaut.

    Une solution pourrait être de modifier ta requête SQL qui fourni les données à ton état : je ne sais pas comment tu stockes tes semaines ou comment tu détermines le premier jour de la semaine mais à partir d'une date voila comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (DAY(ChampDate) & "/" & MONTH(ChampDate)) AS DateFormattee, .....
    Du coup DateFormattee sera une chaîne de caractère mais elle affichera bien ce que tu voudras, à savoir la date contenue dans ChampDate au format jj/mm
    Neilos

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    je ne stocke pas les semaines puisque je les calcule à partir de la date d'aujourd'hui. Je n'ai donc pas de requete SQL.
    Si j'utilise ta syntaxe qui consiste à mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Fin = Day(DateFin) & "/" & Month(DateFin)
    j'obtiens toujours 1.667

  6. #26
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    J'ai crée un nouveau formulaire et j'y ai placé un TextBox nommé Text11. J'ai laissé la propriété Format de ce TextBox vide.

    Dans l'évènement OnClick d'un bouton j'ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text11 = Day(Date) & "/" & Month(Date)
    Date prenant la date d'aujourd'hui, après un clic sur le bouton j'ai bien le texte
    "21/6" qui s'affiche dedant.

    Chez toi il fait le calcul c'est bizarre...supprime voir ton TextBox et remet en un neuf...à tout hasard !
    Neilos

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    en fait, il ne fait le calcul que quand Fin en en string.
    Quand il est en Date, ça marche à part qu'il inverse le jour et le mois quand le jour est <12.
    Essaye plutot avec une date du genre 03/06, moi ça me donne 06/03 quand Fin est une Date.

  8. #28
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    C'est pas normal qu'il te calcul ça si Fin est en string !

    Par contre pour l'inversion jour/mois c'est "normal". En plaçant ceci dans mon OnClick de mon TextBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim dDate As Date
        dDate = #6/3/2005#
        Text11 = Day(dDate) & "/" & Month(dDate)
    Il m'affiche 3/6. VBA travaille en anglais, je pense que si tu mets 23/01/2005 il switch tout seul les jours et mois pour avoir une date qui tient la route? VBA m'a l'air de travailler en mode mm/jj/yyyy ce qui ne m'étonne pas car c'est anglais.

    Si tu veux inverser les champs mm et jj, je m'étais écrit une petite fonction pour cela :

    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
    Public Function DatabaseDate(strDate As String)
    ' Echange les champs jours et mois d'une date xx/xx/aaaa
        Dim strWork As String
        Dim iTemp As Integer
        Dim myArray As Variant
     
        ' Extraction du jour
        strWork = "/" & strDate
        'Debug.Print "strWork = " & strWork
        myArray = Split(strWork, "/", 4)
     
        If UBound(myArray) <> 3 Then
            'Debug.Print "UBound = " & UBound(myArray)
            DatabaseDate = ""
        Else
            DatabaseDate = myArray(2) & "/" & myArray(1) & "/" & myArray(3)
        End If
    End Function
    En espérant que cela résolve ton problème,
    Neilos

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    est-ce qu'il n'y a pas moyen de dire que "/" est un caractère spécial qui doit apparaitre et non pas un signe de calcul?
    par exemple, mettre un % ou qqchose comme ça devant?

  10. #30
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ben normalement "/" c'est une chaine de caractère donc il n'est pas censé l'interpréter.

    La fonction que je t'ai passé ne fonctionne pas ?
    Neilos

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    si mais mon problème est de savoir quand le format n'est pas bon.
    Il faudrait pouvoir savoir si la date est au format anglais ou français pour appeler la fonction que si besoin

  12. #32
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Alors attend si je récapitule tout, tu fais quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim dDebut, dFin As Date
     
    dDebut = Date()
    dFin = Date()
     
    ' Ensuite tu fait les modifications qui vont bien sur ces dates pour
    ' avoir les bonnes semaines
     
    'TB_Debut est le TextBox devant représenter la date de début
    'TB_Fin celui représentant la date de fin
     
    TB_Debut = Day(dDebut) & "/" & Month(dFin)
    TB_Fin = Day(dFin) & "/" & Month(dFin)
    Donc en fait ma fonction ne te sers à rien.
    Essaye en remplacant le / par un autre caractère, comme - par exemple.
    Neilos

  13. #33
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    tu as bien compris.
    Pour ce qui est du "-", c'est pareil que pour le "/", à part que maintenant, il me fait la soustraction au lieu de la division.

  14. #34
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Pour être sûr j'ai crée une nouvelle base vide.
    J'y ai ajouté un forumlaire ainsi qu'un TextBox nommé Text0 et un bouton.

    Dans le OnClick de ce bouton j'ai mis le code suivant (le même qu'avant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim dFin As Date
    dFin = Date
    Text0 = Day(dFin) & "/" & Month(dFin)
    Tout cela fonctionne parfaitement.
    Peux tu tester de la même façon en créant une nouvelle base et en ne changeant rien d'autre (aucune propriété des éléments notement) que ce que j'ai fait ci-dessus ?
    Neilos

  15. #35
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    ça marche très bien sur le formulaire mais le problème c'est que ça ne marche pas sur les états...

  16. #36
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    J'ai testé sur un etat ça fonctionne très bien !!!!
    Edit : je n'ai pas utilisé d'assistant j'ai juste crée un état avec un TextBox
    Neilos

  17. #37
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    quelle date avais-tu, la date d'aujourd'hui?

  18. #38
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim dFin As Date
        dFin = #6/3/2005#
        Text0 = Day(dFin) & "/" & Month(dFin)
    Il m'affiche 3/6 ce qui est juste vu que j'ai entré une date dans mon code VB elle est donc au format mm/jj/yyyy

    Edit : ça marche bien aussi avec la date d'aujourd'hui
    Neilos

  19. #39
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    Mon problème viens peut-etre du fait que ma date n'est pas saisie dans le code mais calculée, je ne peut donc pas mettre : #06/03/2005# car j'ai essayé de mettre ma variable contenant la date entre # mais ça ne marche pas...
    Je crois que je vais abandonner...

  20. #40
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Tu peux mettre ton code en entier de sorte que je le teste chez moi ?
    Allez courage on va y arriver !
    Neilos

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Changer le format des dates dans une requête SQL
    Par Tazze-99 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/07/2012, 15h09
  2. [WD14] Format de date dans un état
    Par noviceman1 dans le forum WinDev
    Réponses: 8
    Dernier message: 24/01/2012, 18h15
  3. [2.x] Format des dates dans un formulaire
    Par paul01 dans le forum Symfony
    Réponses: 20
    Dernier message: 18/09/2011, 15h05
  4. Forcer le format des dates dans une cellule
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/10/2008, 13h20

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