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 :

Date versus Date$


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut Date versus Date$
    Bonjour,

    En consultant l'aide VBA (F1 mon amie), j'ai découvert la fonction Date$ (avec un Dollar).
    Je connais ce type de fonction avec les manipulations de base de String (Mid$, Left$ etc...) qui ne sont en réalité que stricto sensu la même chose que leurs "parentes" de type Variant, mais typées en String.

    Cependant, avec la fonction Date, il y a une particularité que je ne saisis pas.

    Extrait de l'aide VBA concerné :
    Date, fonction
    Renvoie une valeur de type Variant (Date) contenant la date système actuelle.
    Date, et s'il s'agit d'un calendrier Grégorien, le comportement de Date$ reste inchangé par rapport à la valeur de la propriété Calendar. Si vous utilisez un calendrier Hijri, Date$ renvoie une chaîne de 10 caractères sous la forme mm-dd-yyyy, mm (01-12), dd (01-30) et yyyy (1400-1523) désignant respectivement le mois, le jour et l'année Hijri. La plage de valeurs équivalentes dans le calendrier Grégorien est comprise entre le 1er janvier 1980 et le 31 décembre 2099.
    En gras, souligné, la partie qui a un "comportement inattendu" lors de mes essais.
    En effet, si je lis bien, et étant en calendrier grégorien (du moins il me semble bien!), Date doit être égale à Date$.
    Or, le code suivant renvoie Faux :
    Il y a une inversion jours - mois.
    Date = 05/12/2018 et Date$ = 12/05/2018

    Je crois savoir que les dates, en texte, lors de transferts VBA => Excel sont souvent mal interprétées.
    Est-ce du à cela ou à une tout autre incompréhension de ma part?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour pijaku
    non seulement il y a inversion du mois/jour mais le separateur est différent chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox "Date($)  : " & Date$ & " : " & TypeName(Date$) & vbCrLf & "Date : " & Date & "  : " & TypeName(Date)
    End Sub
    ca ne serait pas la representation US des dates par hasard

    drole de decouverte

    fonction month,day,etc... inutilisable avec (resultats faux)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour pijaku, patricktoulon, la forum
    en anglais :
    The $ version of the function returns the same value as the Variant version. The one exception to the rule is the VBA Date function. The Date function should always be used because the Date$ function doesn't behave correctly. The Date$ always returns information in mm-dd-yyyy format regardless of the Windows localization settings, whereas the Date function uses the localization settings. Furthermore, you will always want to use the Format$ function to explicitly format a date. See also the section on Date Functions.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pijaku Voir le message
    Or, le code suivant renvoie Faux :
    Petit test dans la fenêtre d'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ? Date
    05/12/2018 
    ? Date$
    12-05-2018
    Non seulement il y a inversion mois-jour mais les séparateurs sont différents.

    Perso, Date$, je ne lui fais pas confiance.
    Je préfère Format(Now, "dd/mm/yyyy") qui permet de garder le contrôle.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    d'autant plus que comme je l'ai dis et testé on ne peut pas l'exploiter avec day,month,etc.....
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Merci à tous, en particulier BENNASR pour le lien.
    J'ai pourtant bien cherché sans rien trouver.

    Merci
    A++

    PS : hors sujet, mais je ne reçois plus aucune notification par mail depuis une semaine, malgré la coche de la case : me notifier des modifications : Instantanée par email.
    Idem pour les MP...

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

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