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 Access Discussion :

Inverse de Datepart ?


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut Inverse de Datepart ?
    Bonjour,

    Je souhaiterai savoir s'il existe une fonction qui fait l'inverse de datepart().

    Par ex: Mon information d'entrée est "Q1 2012" pour le premier trimestre 2012; "Q2 2012", etc

    J'aimerai récupérer en sortie la liste des semaines associées à "Q1 2012" / Q2 2012, etc.

    Merci d'avance de vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut


    pour la liste des semaines, tu souhaiterais avoir le premier et le dernier numéro ou bien toutes les semaines ?

    A quel niveau de ton raisonnement bloques-tu actuellement ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Salut,

    J'aimerai avoir la liste des semaines, par trimestre, pour une année donnée.
    (par ex, en 2012, il y a 13 semaines sur Q1, mais ca peut peut etre changer selon l'année).

    J'aimerai donc que le code me dise : sur la période Q1, numéro de semaine de début = 1 / numéro de semaine de fin = 13 ; pareil pour Q2 etc, selon l'année donnée en entrée...

    Mais je me prend peut etre la tete pour rien... je peux prendre l'hypothese :
    Q1 : de 1 à 13
    Q2 : de 14 à 26
    Q3 : de 27 à 39
    Q4 : de 40 à 52

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok,
    en entrée de ta fonction, tu lui donnerais une chaine de caractères ? un numéro de trimestre ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Merci pour ta réponse,

    En entrée de ma fonction, j'ai une chaine de caractères, par ex : "Q1 2012".

    Je splitte la chaine de caractères pour isoler d'une part le trimestre (ici, Q1), et également l'année (ici 2012).

    J'aimerai donc savoir s'il était possible, à partir de ces 2 variables, d'avoir les numéros de semaines associées à la période.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok,

    alors en développant vite fait, j'ai ceci:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Explicit
    Public Function PremiereDerniereSemaine(strinput As String) As String
    'on part du principe qu'on reçoit en chaine de caracteres 'QX YYYY'
    Dim dt As Date
    Dim dtmin As Date
    Dim dtminOK As Boolean
    Dim dtmax As Date
    Dim dtmaxOK As Boolean
    Dim inputyear As Integer
    Dim inputpart As Integer
    Dim result As String
    inputyear = CInt(Right(strinput, 4))
    inputpart = CInt(Mid(strinput, 2, 1))
     
    dtmin = DateSerial(inputyear, 1, 1)
    dtminOK = False
    dtmax = DateSerial(inputyear + 1, 1, 1) - 1
    dtmaxOK = False
    For dt = DateSerial(inputyear, 1, 1) To DateSerial(inputyear + 1, 1, 1) - 1
        If CInt(DatePart("q", dt)) = inputpart Then
            If Not dtminOK Then
                dtmin = dt
                dtminOK = True
            End If
        ElseIf DatePart("q", dt) > inputpart Then
            If Not dtmaxOK Then
                dtmax = dt - 1
                dtmaxOK = True
            End If
        End If
    Next dt
    result = DatePart("ww", dtmin) & "|" & DatePart("ww", dtmax)
    PremiereDerniereSemaine = result
    End Function
     
    Sub piou()
    Debug.Print PremiereDerniereSemaine("Q1 2011")
    Debug.Print PremiereDerniereSemaine("Q2 2011")
    Debug.Print PremiereDerniereSemaine("Q3 2011")
    Debug.Print PremiereDerniereSemaine("Q4 201")
    Debug.Print PremiereDerniereSemaine("Q1 2012")
    Debug.Print PremiereDerniereSemaine("Q2 2012")
    Debug.Print PremiereDerniereSemaine("Q3 2012")
    Debug.Print PremiereDerniereSemaine("Q4 2012")
    End Sub
    C'est évidemment adaptable voire optimisable à souhait
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre confirmé Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Par défaut
    bonjour,

    une petite fonction qui détermine le premier jour et le dernier jour de la semaine en indiquant les jours Week-End dans mon cas c'est le vendredi et samedi:

    Fonction qui converti la date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function ap_SQLArgDate(ByVal vDate As Date) As String
    On Error Resume Next
        If Not IsNull(vDate) Then
            ap_SQLArgDate = "#" & Format$(vDate, "mm/dd/yyyy") & "#"
        End If
    End Function
    Utilisation par Exemple (liste déroulante qui contient les numéro de Week de 01 au 53):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub FiltreWeek_AfterUpdate()
    Dim DateStart, dateEnd As String
    On Error GoTo err
    DateStart = (7 * Val(Me.FiltreWeek.Value)) + DateSerial(Year(date), 1, 1) - 7 
        dateEnd = (7 * Val(Me.FiltreWeek.Value)) + DateSerial(Year(date), 1, 1) - 3
        Me.Texte87 = ap_SQLArgDate(DateStart)
        Me.Texte89 = ap_SQLArgDate(dateEnd)
    err:
        Exit Sub
    End Sub
    j'espere que ca va t'aider.

    A+

  8. #8
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Merci de vos réponses,

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

Discussions similaires

  1. inverser l'écran
    Par relax_06 dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/03/2004, 12h20
  2. inverser la lecture d'une requète
    Par nilaco dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/08/2003, 12h16
  3. [VB6] [Graphisme] Inversion dans picturebox
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 16/04/2003, 15h05
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. [VB6]fonction inverse de Hex (nombres hexadécimaux)
    Par Guigui_ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 19h31

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