Trouver dernier jour mois précédent

Résolu
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour

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

A+
0
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci beaucoup ça fonctionne !
0
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   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