Re: Macro conditionnelle sur "End Of Month"
Bonjour Sylvain, LN, le Forum
Attention mon Amiral, nous allons droit sur les récifs !!! En effet, le Select Case proposé va déclencher la Macro28 même le 28 janvier, ou tous les 28 de tous les mois, et j'ai cru bien comprendre que Sylvain voulait le déclenchement d'une macro conditionnellement si la date dans une cellule déterminée était bien la fin du mois...
(ou alors j'arrête la bière le Vendredi soir !!)
Maintenant, Sylvain veut probablement générer un tableau différent en fonction du mois concerné, (ou quelque chose de similaire) si le mois à 28 jours ou 29, ou 30 ou 31...
Voici ce que je propose, en supposant que Sylvain a son tableau avec des Dates dans la colonne "A"...
Cette procédure va scanner la dernière cellule de la Colonne "A" pour déterminer si c'est bien une date (sinon Erreur gérée), puis déterminer si c'est bien le dernier jour du mois (sinon indication du nombre de jours avant la fin du mois en question), et donc si c'est bien le dernier jour du mois, on peut alors utiliser la procédure Select Case.
Sub CheckingEndOfMonth() '@+Thierry
Dim WS As Worksheet
Dim CURDate As Date
Dim EOMDate As Date
Dim L As Integer
Set WS = ThisWorkbook.Sheets("Feuil1")
L = WS.Range("A65536").End(xlUp).Row
WS.Activate
On Error GoTo ErrorHandler
CURDate = WS.Cells(L, 1)
EOMDate = Evaluate("DATE(YEAR(A" & L & "),MONTH(A" & L & ")+1,1)-1")
If CURDate = EOMDate Then
MsgBox "la date est bien une fin de mois" & vbCrLf & "La macro Fin de Mois va maintenant s'éxécuter !"
MacroFinDeMois CURDate
Else
MsgBox "Il reste " & EOMDate - CURDate & " jours avant la fin du mois de " & Format(CURDate, "MMMM")
End If
Exit Sub
ErrorHandler:
If Err = 13 Then
MsgBox "La valeur de la cellule A" & L & " n'est pas une date valide : " & WS.Cells(L, 1)
Else
MsgBox "Erreur non répertoriée," & Err.Number & " " & Err.Description
End If
End Sub
Sub MacroFinDeMois(TheDate As Date)
Select Case Day(TheDate)
Case 28
MsgBox "Nous sommes en Février Non-Bisextil"
Case 29
MsgBox "Nous sommes en Février Bisextil"
Case 30
MsgBox "Nous sommes en " & Format(TheDate, "MMMM") & " et il y a 30 jours !!"
Case 31
MsgBox "Nous sommes en " & Format(TheDate, "MMMM") & " et il y a 31 jours !!"
Case Else
End Select
End Sub
Bon Premier Mai à Tous et Toutes
@+Thierry