Trouver dernier jour mois précédent

Résolu
a51432 Messages postés 39 Statut Membre -  
PlacageGranby Messages postés 402 Statut Membre -
Bonjour,

Je cherche à trouver la date du dernier jour du mois dernier (hors week end).

Pour cela, j'ai testé le code suivant (qui ne fonctionne pas) :

Dim année
Dim MoisCh As String
Dim first, last As Date

année = Year(Now())
MoisCh = Format(Now(), "mm")
first = "01\" & MoisCh & "\" & année
last = first - 1

If Weekday(last) = 7 Then
last = last - 1
ElseIf Weekday(last) = 1 Then
last = last - 2
End If


la ligne : last = first - 1 ne renvoit pas le jour précédant le premier jour du mois actuel (= le dernier jour du mois précédant).

Auriez-vous une solution ?

Merci d'avance !

3 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour

    last = DateSerial(Year(Date), Month(Date), 1) - 1

    A+
    0
  2. a51432 Messages postés 39 Statut Membre 1
     
    Merci beaucoup ça fonctionne !
    0
  3. PlacageGranby Messages postés 402 Statut Membre 26
     
    Bonjour,

    Quelques petites erreur.

    first = "01\" & MoisCh & "\" & année

    Ne donnera pas une date mais une chaine texte.
    Il faut utiliser Cdate() pour convertir la chaine texte en date.
    Aussi, un backslash \ n'est pas reconnu comme délimiteur de date dans excel.
    C'est soit le slash / ou le tiret -

    Donc
    Dim année
    Dim MoisCh As String
    Dim first as date, last As Date
    
    année = Year(Now())
    MoisCh = Format(Now(), "mm")
    first = cdate("01/" & MoisCh & "/" & année)
    last = first - 1
    


    Dernière subtilitée
    Dim first, last As Date

    VBA n'assigne pas toute les variable comme étant une énumération du même type.
    Ta déclaration, First sera un type variant, et Last sera une date.

    Il n'y aura pas d'erreur même si First est un variant, mais j'imagine que le type variant consomme plus de mémoire et ton code est moins optimisé.
    0