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 SubJe 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