Renvoyer dernier jour du mois

Bonjour à tous,

Je rencontre depuis quelques jours un soucis au niveau de macro ci-dessous.

Voici son principe. J'ai un fichier excel où je fais une facturation en inscrivant dans la dernière colonne le BL suivi de l'année et du mois d'une valeur présente dans une cellule.

A l'aide d'une userform, je viens rentrer l'année et le mois que je veux facturer. Cette macro va aussi prendre les mois inférieurs au mois inscrit dans la userform si ceux-ci n'ont pas été facturés. Par exemple je veux faire la facturation de mars, si des projets indiqués en février n'ont pas été facturés ils le seront avec le mois de mars.

Ma macro créée bien les facturation, mais ne traite aucun de projets indiqués avec une date de fin de mois. Le 31 mars sera oublié, comme le 30 mai, le 31 juin et ainsi de suite.

Voici mon code principal en question :

'NEW MACRO
Sub Macro_BL()

'Déclaration variables
Dim mois$, annee$, cc, i%

Dim ADerlig As Integer

'Déclaration plage de recherche
ADerlig = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

mois = TextBox3.Value
annee = TextBox2.Value

'Identification des mois dans la textbox3
Mois2 = TextBox3.Value
    If TextBox3.Value = "01" Then Mois2 = "Janvier"
    If TextBox3.Value = "02" Then Mois2 = "Février"
    If TextBox3.Value = "03" Then Mois2 = "Mars"
    If TextBox3.Value = "04" Then Mois2 = "Avril"
    If TextBox3.Value = "05" Then Mois2 = "Mai"
    If TextBox3.Value = "06" Then Mois2 = "Juin"
    If TextBox3.Value = "07" Then Mois2 = "Juillet"
    If TextBox3.Value = "08" Then Mois2 = "Août"
    If TextBox3.Value = "09" Then Mois2 = "Septembre"
    If TextBox3.Value = "10" Then Mois2 = "Octobre"
    If TextBox3.Value = "11" Then Mois2 = "Novembre"
    If TextBox3.Value = "12" Then Mois2 = "Décembre"

'Procédure de remplissage des BL en fonction des cellules de tri
With Worksheets("Feuil1")
    If .FilterMode Then .ShowAllData
    With .Range("A2:AV" & ADerlig)
        'Recherche si la date désirée a déjà été traitée
        If Application.CountIf(.Columns(48), "BL-" & annee & "-" & mois & "-*") > 0 Then
            continuer = MsgBox("La période de " & Mois2 & " a déjà été traitée !" & vbLf & vbLf & "Voulez-vous continuer ?", _
                        vbInformation + vbYesNo, "Demande de confirmation")
            If continuer <> vbYes Then Exit Sub
        End If
        'Création du BL au mois voulu
        cc = Application.Transpose(.Columns(48))
        For i = 1 To .Rows.Count
            If .Cells(i, 21).Value <> "" And .Cells(i, 27).Value <> "" Then
                If .Cells(i, 27) < Application.EoMonth(DateSerial(annee, mois, 1), 0) Then
                    If cc(i) = "" Then cc(i) = "BL" & "-" & annee & "-" & mois & "-" & .Cells(i, 21)
                End If
            End If
        Next i
        .Columns(48) = Application.Transpose(cc)
        MsgBox ("Traitement des BL pour " & Mois2 & " terminé")
    End With
End With

End Sub

Je pense que le soucis viendrait de la fonction :

Application.EoMonth(DateSerial(annee, mois, 1), 0)

J'ai eu beau essayé de modifier les termes à l'intérieur mais rien n'y fait. La macro ne prend pas les dates où une fin de mois est indiqué.

Auriez-vous des solutions là-dessus ?

Cordialement

GuiGui8731

Bonjour

If .Cells(i, 27) <= Application.EoMonth(DateSerial(annee, mois, 1), 0) Then

<=

Bonjour 78chris,

Je viens de tester la macro avec ta modif et ça marche parfaitement maintenant.

Merci pour ton aide.

GuiGui8731

Rechercher des sujets similaires à "renvoyer dernier jour mois"