VBA Dates + Numéros de Semaines

Résolu/Fermé
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 7 août 2009 à 09:33
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 7 août 2009 à 13:59
Bonjour à toutes et à tous,

j'aurais besoin de votre aide pour un p'tit souci en vba sur les dates :

'je déclare une date pour la date du jour (ça marche bien) :
maDate = Format(Now, "dd-mm-yy")
datedujour = CDate(maDate)

'je stocke le jour, le mois et l'année dans des variables (ça marche encore bien) :
jour_datejour = Day(datedujour)
mois_datejour = Month(datedujour)
annee_datejour = Year(datedujour)

'je récupère le numéro de la semaine correspondant à la date du jour ( fonctionne bien) :
semaine_du_jour = Format(datedujour, "ww", vbFirstFourDays)

'mon problème vient maintenant, je voudrais récupérer le numéro de seamaine correspondant
'au jour : 28/mois_datejour/annee_datejour, j'ai fait :
dateFinMois = Format(28, mois_datejour, vbUseSystemDayOfWeek)
semainefin = Format(dateFinMois, "ww", vbFirstFourDays)

si quelqu'un peut me donner un coup de main, ça serait super COOL !!!!
merci

2 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
7 août 2009 à 09:48
Bonjour,
Quelques exmeples de fonctions perso que j'utilise :
Function Semaine(LaDate As Variant) As Variant

' Renvoie le numéro de la semaine pour le calendrier français (52 semaines)

    Dim i As Byte
    If IsDate(LaDate) Then
        i = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
        If i = 0 Then i = 1
        Semaine = i
    Else
        Semaine = Null
    End If
End Function

Function Trimestre(LaDate As Variant)

' Renvoie le trimestre de la date.
' Si des journées de décembre sont en semaine 1 de l'année suivante, alors
' ces dates vont dans l'année suivante en tant qu'éléments du trimestre 1

    Dim i As Byte
    If IsDate(LaDate) Then
        i = Semaine(LaDate)
        If i = 1 Then
            Trimestre = 1
        Else
            Trimestre = DatePart("q", LaDate, vbMonday, vbFirstFourDays)
        End If
    Else
        Trimestre = Null
    End If
End Function

Function DernierJour(LaDate As Variant) As Variant

' Renvoi le N° du dernier jour du mois

    If IsDate(LaDate) Then
        DernierJour = CByte(Day(DateSerial(Year(LaDate), Month(LaDate) + 1, 0)))
    Else
        DernierJour = Null
    End If
End Function
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6
7 août 2009 à 10:16
merci beaucoup !!!

je teste et je te tiens au courant !!!
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6
7 août 2009 à 11:15
j'ai testé, tes fonctions sont vraiment bien utiles par contre,
lorsque j'ai le dernier jour du mois, je voudrais créer une date contenant le dernier jour du mois avec le mois et l'année courante mais je n'arrive pas à créer une date avec des variables.

Aurais-tu une idée stp ?
Merci !
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
7 août 2009 à 11:40
Re,
Function DateDernierJour(LaDate As Variant) As Variant

' Renvoi la date du dernier jour du mois

    If IsDate(LaDate) Then
        DateDernierJour = (DateSerial(Year(LaDate), Month(LaDate) + 1, 0))
    Else
        DateDernierJour = Null
    End If
End Function

;)
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6
7 août 2009 à 13:59
merci bcp tompols c'est nickel !!!!!!!!!!!!!!!!!!!!!!!!!

Bonne journée :-)
0