Trouver dernier jour mois précédent
Résolu
a51432
Messages postés
39
Statut
Membre
-
PlacageGranby Messages postés 402 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) :
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 !
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
-
Bonjour
last = DateSerial(Year(Date), Month(Date), 1) - 1
A+ -
-
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 -
DoncDim 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éeDim 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é.