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 :

Vérification du format de la date


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour unparia
    avant j'avais celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Tag <> "" Then Me.Controls(CStr(.Tag)).Caption = DatePart("ww", DateSerial(comboYear.Value, Cb_Month.ListIndex, j), IIf(region = 0, vbSunday, vbMonday), vbFirstFullWeek)
    qui me donne 53 pour le 01/01/2019 et 5 pour le 06/02/2019 et et 51 pour le 01/12/2019
    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

  2. #22
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Celle-la non plus n'applique pas la norme Iso ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    la page wiki je la connais
    mais aucunne formule avec les constantes VB sont bonnes en semaine 1 et derniere alors la formule c'est quoi ??
    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

  5. #25
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    alors la formule c'est quoi ??
    ---->>
    ...Définitions de la première semaine de l’année ISO

    Toutes les définitions suivantes pour la première semaine de l’année ISO sont équivalentes :

    la première semaine avec au moins quatre jours dans la même année civile... ;
    DatePart("ww", DateSerial(2016, 2, 1), vbMonday, vbFirstFourDays)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #26
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    c'est ce que j'avais avant et ben non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    region=1
    If .Tag <> "" Then Me.Controls(CStr(.Tag)).Caption = DatePart("ww", DateSerial(comboYear.Value, Cb_Month.ListIndex, j), IIf(region = 0, vbSunday, vbMonday), vbFirstFourDays)
    Nom : Capture.JPG
Affichages : 256
Taille : 44,7 Ko
    et tu d'accords avec cette transition?
    Nom : demo3.gif
Affichages : 269
Taille : 118,9 Ko
    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

  7. #27
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Là, tu t'égares comme ce n'est pas possible de s'égarer.
    La norme Iso est ce qu'elle est et le premier jour de la semaine, en norme Iso, est le Lundi.
    Tu ne peux à la fois choisir un premier jour de la semaine différent de la norme Iso et déterminer le N° de semaine en appliquant la norme Iso.
    Allez, je te laisse avec ton pied droit sur une barque et l'autre sur une autre barque.
    Débrouille-toi.

    EDIT : tu voudras bien excuser ma réaction, mais je me rappelle parfaitement t'avoir déjà dit, dans une discussion relativement récente, que l'on ne pouvait traiter cela sans étudier et comprendre d'abord (et donc avant même tout code) la norme Iso. Passé aux oubliettes ?
    Je vais ici me contenter de ceci --->>
    D'après la norme ISO 8601, une semaine débute un lundi et s'achève un dimanche, et une semaine dépend d'une année lorsqu'elle place une majorité de ses sept jours dans l'année en question, soit au moins quatre
    Tu voudras bien comprendre que je n'ai pas du tout envie de confondre (et d'éterniser une discussion) développement informatique et étude de la norme Iso. Le premier ne saurait être fait sans avoir analysé et compris le second et ce sont là deux choses distinctes.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui en gros tu l'a pas non plus et tu cherche a t'en sortir avec ta pirouette habituelle d'échappée

    ne regarde pas le iif .. considere que c'est vbmonday (puisque region=1) donc le datepart("ww",une date,vbmonday,vbfirstfourdays ne fonctionne pas sur toute l'année

    c'est bon pour janvier mais plus bon pour fevrier puisque 06/02/2019 donne semaine 6

    c'est ce que j'essaie de te dire depuis longtemps

    d'ailleurs si tu avais testér plus d'une date jusque en decembre tu t'en serait rendu compte

    pour info j'ai un calendrier sur le web qui me sert de controle

    quand je te dis que j'ai testé toute les formules avec toute les constantes VB et cela pour les 365 jous c'est que je l'ai fait

    j'ai lu justement sur un autre forum que le formule change dans l'année
    quand a la norme iso je pense qu'elle est on ne peut plus claire et par raport a ce que j'ai lu il semblerait bien que la piste de la formule changeante soit la seule
    en tout cas celle la c'est sur ca match pas

    bref c'est pas grave quelqu'un sera peut etre plus patient que toi voir meme quelqu'un a deja une solution

    je ne suis pas préssé
    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

  9. #29
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    1)
    ne regarde pas le iif
    je regarde ce que tu invites à regarder
    2)
    c'est bon pour janvier mais plus bon pour fevrier puisque 06/02/2019 donne semaine 6
    et il se trouve que le 6 février 2019 est bel et bien en semaine 6 en norme Iso. (la 6ème semaine de 2019 s'est étalée du Lundi 4 février 2019 au Dimanche 10 février 2019 inclus).

    Conclusion de ton "en gros ..." et de ton "pirouette habituelle" ...

    j'ai lu justement sur un autre forum que le formule change dans l'année
    Tu as lu du n'importe quoi !
    EDIT : une petite utilisation de ceci t'éviterait d'avancer n'importe quoi --->> http://fr.weeknumber52.com/
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #30
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Pour info DatePart("ww", Dat, vbMonday, vbFirstFourDays) est presque bon.
    Il pêche sur certains derniers lundi de l'année qu'il place en semaine 53 au lieu de 1 :
    lun 29/12/1947 lun 31/12/1951 lun 30/12/1963 lun 29/12/1975 lun 31/12/1979 lun 30/12/1991 lun 29/12/2003 lun 31/12/2007 lun 30/12/2019 lun 29/12/2031 lun 31/12/2035 lun 30/12/2047 lun 29/12/2059

    Pas de bol, il y a 2019...

    Il y avait un KB200299 à ce sujet mais la page a disparu.
    Copié à l'époque :
    BUG: Les fonctions Format et DatePart peuvent renvoyer un numéro de semaine erroné pour le dernier lundi de l'année
    Lorsque vous utilisez la fonction Format ou DatePart pour déterminer le numéro de semaine d'une date avec la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Format(AnyDate, "ww", vbMonday, vbFirstFourDays)
    DatePart("ww", AnyDate, vbMonday, vbFirstFourDays)
    certaines années, la semaine 53 est renvoyée pour le dernier lundi alors que ce devrait être la semaine 1.
    Contournement
    Si vous utilisez la fonction Format ou DatePart, vous devez vérifier la valeur renvoyée et, si c'est la valeur 53, revérifier et forcer le retour de 1, le cas échéant.
    Cet exemple de code explique la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function WOY (MyDate As Date) As Integer   ' Week Of Year
      WOY = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
      If WOY > 52 Then
        If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then WOY = 1
      End If
    End Function
    Collé à partir de <https://support.microsoft.com/fr-fr/kb/200299>
    eric

  11. #31
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Eric
    Tout-à-fait.
    Ce qu'il y a de toutes manières d'assez "confus", c'est le fait de retourner un numéro de semaine sans préciser, lorsque tel est le cas, que ce numéro de semaine est celui de l'année suivante ou celui de l'année antérieure.
    Ainsi (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    année = 2025
    mois = 1
    jour = 1
    MsgBox DatePart("ww", DateSerial(année, mois, jour), vbMonday, vbFirstFourDays)
    retournera 1 (1ère semaine de l'année 2025)
    que retournera également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    année = 2025
    mois = 12
    jour = 31
     
    MsgBox DatePart("ww", DateSerial(aCe nnée, mois, jour), vbMonday, vbFirstFourDays)
    Le 1 est bien exact, mais il représente un numéro de semaine de 2026, sans le préciser de quelque façon que ce soit.

    Je préfère à la limite le "retour" de "53" qui, lui, m'indique que l'on passe à l'année suivante.

    Existe néanmoins une ambiguïté d'interprétation possible lorsque l'année concernée contient bel et bien (hé oui, cela arrive) 53 semaines.
    J'ai en ce qui me concerne fait ce qu'il fallait pour déterminer si ce 53 correspond au 1 de l'année suivante ou s'il est vraiment révélateur d'une 53ème semaine de l'année en cours.

    EDIT : pour ceux que cela intéresse sérieusement, j'ai personnellement choisi la notation ISO, qui est la suivante :
    Jour de la semaine 53 Notation
    Lundi W53-1 (28 décembre)
    Mardi W53-2 (29 décembre)
    Mercredi W53-3 (30 décembre)
    Jeudi W53-4 (31 décembre)
    Vendredi W53-5 (1er janvier)
    Samedi W53-6 (2 janvier)
    Dimanche W53-7 (3 janvier)
    et qui permet de déterminer sans le moindre doute s'il s'agit réellement d'une 53ème semaine de l'année considérée.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    j'avais donc raison la formule ne suffit pas

    53/52 ou 52/1

    d'apres la norme iso (wiki)
    D'après la norme ISO 8601, une semaine débute un lundi et s'achève un dimanche, et une semaine dépend d'une année lorsqu'elle place une majorité de ses sept jours dans l'année en question, soit au moins quatre. Dès lors, la semaine 53, quand elle existe, est la semaine du cinquante-troisième et dernier jeudi de l'année, quand il existe. Et un cinquante-troisième jeudi peut exister soit quand l'année commençait par un jeudi, soit quand elle commençait par un mercredi et était bissextile.
    dans la formule on pourrait :
    moins=iif (day(dateserial(année,1,1)=4,1,0)
    reste la gestion des années bissextiles
    quelle formule pour determiné si la derniere semaine commence par mercredi pour jeudi

    le calendrier 2019
    https://www.calendrier-365.fr/calendrier-2019.html

    edit

    peut etre une fonction comme ca

    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
    Sub test()
    '2008 bissextile
    MsgBox sem53(2008)
    MsgBox sem53(2009)
    MsgBox sem53(2019)
    MsgBox sem53(2016)
    MsgBox sem53(2012)
    MsgBox sem53(2004)
    End Sub
    Function sem53(an)
    biss = (an - 2008) Mod 4 = 0
    j = Weekday(DateSerial(an, 1, 1) + 365.25 - 1 - 7)
    moins = moins >= 3 And moins <= 4
    sem53 = biss = True Or moins = True
    End Function
    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

  13. #33
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    j'avais donc raison la formule ne suffit pas
    Elle ne suffit en effet pas (lire mon message précédent), mais elle doit rester la base (contrairement à ce que tu avais écrit dans ton premier code montré ici et dans le code de "correction" que tu proposais)
    Sur ce ...
    Bonne chance
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    ou de cette facon
    puisque les 29/02/an sont toute les années bissextiles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function sem53bis(an)
    s = IsDate("29/02/" & an)
    j = Weekday(DateSerial(an, 1, 1) + 365.25 - 1 - 7)
    moins = moins >= 3 And moins <= 4
    sem53bis = s Or moins = True
    End Function
    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

  15. #35
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j = Weekday(DateSerial(an, 1, 1) + 365.25 - 1 - 7)
    C'est voulu que tu prennes dimanche comme 1er jour de la semaine ? Tu n'as pas spécifié firstdayofweek.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    moins = moins >= 3 And moins <= 4
    ???
    Ca lui arrive d'être vrai ? :-)
    eric

  16. #36
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Salut Eric
    +1
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #37
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Et tant qu'on y est
    soit quand l'année commençait par un jeudi, soit quand elle commençait par un mercredi et était bissextile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sem53bis = s Or moins = True
    Là j'ai bien l'impression que toutes les années bissextiles ont 53 semaines

  18. #38
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Re +1 à Eric
    1) Il ne suffit par ailleurs pas que l'année soit bissextile
    Si elle l'est une 53ème semaine ne peut ("peut" a une signification claire à distinguer de "doit") exister que si l'année débute par un mercredi.
    2) une 53ème semaine peut également exister pour des années qui ne sont pas bissextiles. Certaines années dont le premier jour est un jeudi.

    EDIT : tenter de coder ces petites choses sans avoir analysé, compris et appréhendé préalablement la norme Iso ne peut être que du bricolage pour le moins aventureux.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #39
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    etes vous d'acords avec ce résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    For i = 2000 To 2030
    Debug.Print i & " : " & sem53bis(i, j) & " jour " & j & " : " & Format(1 & "/01/" & i, "dddd dd mm yyyy")
    Next
    End Sub
     
    Function sem53bis(an, j)
    s = IsDate("29/02/" & an)
    j = Weekday(DateSerial(an, 1, 1), vbFirstFourDays)
    moins = j >= 3 And j <= 4
    sem53bis = s Or moins = True
    End Function
    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

  20. #40
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Toujours pas...
    soit quand l'année commençait par un jeudi, soit quand elle commençait par un mercredi et était bissextile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sem53bis = (j=4) or (j=3 and s)
    non ?

    Et sauf pour 2200 que tu comptes bissextile à tort et qui commence un mercredi mais on ne dira rien :-)
    eric

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

Discussions similaires

  1. Je cherche à faire une vérification du format de date
    Par fleedalfire dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2017, 16h55
  2. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  3. ODBC Foxpro format chaine en date
    Par chnew dans le forum Langage SQL
    Réponses: 5
    Dernier message: 07/09/2005, 15h58
  4. format de la date
    Par k_boy dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/06/2004, 21h56
  5. [VB6][Expert Only ?][ADO] Format universel des dates
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 14/02/2004, 10h42

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