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 :

Comparaison de dates


Sujet :

VBA

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 88
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Comparaison de dates
    Bonjour,
    La fonction suivante fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function EssaiGJ(xdate As Range)
    Dim jour As Integer, Mois As Integer, An As Integer
    jour = CInt(Split(xdate.Text, "/")(0))
    Mois = CInt(Split(xdate.Text, "/")(1))
    An = CInt(Split(xdate.Text, "/")(2))
    If An < 1582 Or An = 1582 And Mois < 10 Or An = 1582 And Mois = 10 And jour < 15 Then
    EssaiGJ = "Julien"
    Else
    EssaiGJ = "Grégorien"
    End If
    End Function
    La condition ne me plaisant pas (trop fastidieuse) je l'ai remplacé par le n° de série :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF CLng (CDate(xdate.Text)) < - 115858 Then ...
    Cela fonctionne également
    Je pense qu'il y a d'autres façons de procéder.
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 077
    Points : 24 713
    Points
    24 713
    Par défaut
    Bonjour,

    Utilise les fonctions de Date elles sont là pour ça.

    Day
    Month
    Year
    ...

    Cordialement.

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 348
    Points : 1 965
    Points
    1 965
    Par défaut
    fonctions DateSerial et comparaison directe de date avec CDate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If CDate("#" & xdate.Text & "#") < DateSerial(1582,10,15) then
        EssaiGJ="Julien"
    Else
        EssaiGJ="Grégorien"
    End If
    Il faut que xdate soit dans le format de date du système
    PS: j'ai encadré xdate de dièse pour en faire un littéral de date, comme préconisé dans la doc https://learn.microsoft.com/fr-fr/of...nction-example
    On pourrait utiliser aussi DateValue à la place.

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function EssaiGJ(xdate As Range)
    Dim jour As Integer, Mois As Integer, An As Integer
    jour = CInt(Split(xdate.Text, "/")(0))
    Mois = CInt(Split(xdate.Text, "/")(1))
    An = CInt(Split(xdate.Text, "/")(2))
    If An + Mois / 100 + jour / 10000 < 1582.1015 Then
    EssaiGJ = "Julien"
    Else
    EssaiGJ = "Grégorien"
    End If
    End Function

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 077
    Points : 24 713
    Points
    24 713
    Par défaut
    Pourquoi tu n'utilises pas simplement les instructions dédiées aux dates.

    Donc cette chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jour = CInt(Split(xdate.Text, "/")(0))
    Mois = CInt(Split(xdate.Text, "/")(1))
    An = CInt(Split(xdate.Text, "/")(2))
    En plus simple et plus robuste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jour = day(xdate.Text)
    Mois = Month(xdate.Text)
    An = Year(xdate.Text)
    Plus simple on le voit.
    Plus robuste parce que peu importe le format de la date en entrée
    D'ailleurs un test isdate() en début de fonction est requis. Ou alors faire un vrai traitement d'erreurs.

    Cordialement,

  7. #7
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 88
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Encore Merci

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Bonjour,

    Et au passage, apprend à soigner ton code (indentation ...)

  9. #9
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 88
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci droggo pour le conseil.
    Comme je suis un grand débutant quel outil pour l'indentation (Mac OS) ?

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 077
    Points : 24 713
    Points
    24 713
    Par défaut
    Aucun outils natifs sur Mac. Déjà que sur PC depuis le passage au 64 bits le smartindenter ne fonctionne plus...

    solution :
    Faire un export du module et utiliser un éditeur de code qui prend en charge le VBA.
    Puis faire un import du fichier.

    Ou se créer son propre outils en VBA.

  11. #11
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 88
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci loufab
    Concernant les instructions dédiées aux dates : problème avec les dates av. JC

  12. #12
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 88
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2023
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Pour droggo
    Bonjour,
    Et au passage apprends (avec un s) à soigner ton orthographe (conjugaison..)

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 09h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 17h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 16h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 16h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 22h43

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