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

VBA Discussion :

problème date février 1900


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Par défaut problème date février 1900
    Bonjour,
    Je débute en VBA
    Problème avec la fonction ci-dessous qui extrait la chaîne jour dans une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Essai(xdate As String)
    Dim position As Integer
    Dim jour As String
    position = WorksheetFunction.Search("/", xdate)
    jour = Left(xdate, position - 1)
    Essai = jour
    End Function
    Pour les dates du mois de février 1900 le résultat est le jour précédent :exemples jour(15/02/1900) = 14; jour(1/2/1900) = 31; mais jour (30/02/1900) = 30
    Idem en remplaçant String par Variant.
    Merci de votre réponse
    Problème résolu en cochant la case "Utiliser le calendrier depuis 1904" dans préférences Excel, Formules et Listes, Calcul

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 614
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Il y a un léger décallage d'une journée jusqu'au 28/02/1900 compris.

    à partir de 01/03/1900, il n'y a plus de décallage :

    https://learn.microsoft.com/fr-fr/of...0-is-leap-year

    Ensuite, "30/02/1900" n'est pas considéré comme une date, du coup il le prend comme du texte et ça fonctionne.

    En vba il y a aussi des erreurs :

    https://didier-gonard.developpez.com...-et-vba/#LIV-B

    Avez-vous essayez avec la fonction =JOUR(A1) pour éviter de passer la cellule au format texte ?

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Par défaut date 1900
    Bonjour,
    Le problème disparait si dans préférences Excel, Formules et Listes, Calculs, je coche la case "utiliser le calendrier depuis 1904
    Cdt
    JP Moniatte

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 614
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Chez moi la fonction Jour(Cellule) fonctionne pour les dates antérieures au 01/03/1900, par contre la fonction JourSem ne semble pas fonctionner :

    JourSem("01/01/1900";2) me renvoie 7 qui correspond à un dimanche (le paramètre 2 indique que la semaine commence un lundi)

    Hors le calendrier de 1900 commence bien un lundi :

    https://www.calendrier-365.fr/calendrier-1900.html
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Par défaut
    Merci pour vos réponses et le lien conduisant à "Comprendre et gérer les dates sous Excel et en VBA"
    J'ai encore une question :
    comment obtenir le n° de série (en VBA) d'une date antérieure au 1er janvier 1900 ?
    Exemples : CDbl (1/1/1900) retourne 1; mais CDbl (31/12/1899) donne #VALEUR!
    Les n° de série doivent être <0
    Bien cordialement
    JP Moniatte

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 614
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    La date de référence en VBA est le #01/01/1900# qui a pour valeur 2, pour avoir un numéro de série antérieure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function numserie(dt As Date) As Long
        numserie = CLng(dt)
    End Function
    Que vous appelez dans une cellule :

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Problème date et graphique
    Par rob2-9 dans le forum Access
    Réponses: 4
    Dernier message: 14/08/2006, 12h41
  2. Problème Date access/asp
    Par buzz! dans le forum ASP
    Réponses: 16
    Dernier message: 08/08/2006, 14h53
  3. [Dates] problème date
    Par Le Rebel dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2006, 23h53
  4. [Dates] problème date
    Par masseur dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 11h03
  5. [Access 2003] - Problème date dans requête
    Par Leesox dans le forum Access
    Réponses: 11
    Dernier message: 14/10/2005, 08h51

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