VBA Dates + Numéros de Semaines

Résolu
usdy Messages postés 258 Statut Membre -  
usdy Messages postés 258 Statut Membre -
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
Configuration: Windows XP
Firefox 2.0.0.12

2 réponses

  1. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
    1. usdy Messages postés 258 Statut Membre 6
       
      merci beaucoup !!!

      je teste et je te tiens au courant !!!
      0
    2. usdy Messages postés 258 Statut Membre 6
       
      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
  2. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
    1. usdy Messages postés 258 Statut Membre 6
       
      merci bcp tompols c'est nickel !!!!!!!!!!!!!!!!!!!!!!!!!

      Bonne journée :-)
      0