Sub RelanceFactures()
Dim ws As Worksheet
Dim lastRow As Long
Dim currentDate As Date
Dim i As Long
Dim message As String ' Variable pour stocker les messages
Dim nonRegleCount As Long ' Variable pour compter les factures non réglées
Dim daysRemaining As Long
' Spécifiez le nom de la feuille de calcul
Set ws = ThisWorkbook.Sheets("Feuil1")
' Obtenez la date d'aujourd'hui
currentDate = Date
' Trouvez la dernière ligne de données dans la colonne A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Parcourez les lignes à partir de la ligne 2
For i = 2 To lastRow
If ws.Cells(i, "D").Value <= currentDate And IsNumeric(ws.Cells(i, "H").Value) Then
' Calculer les jours restants
daysRemaining = DateDiff("d", currentDate, ws.Cells(i, "I").Value)
' Afficher les jours restants en colonne K
ws.Cells(i, "K").Value = daysRemaining
' Mettre à jour la colonne J en fonction de la colonne C
Select Case ws.Cells(i, "C").Value
Case "FACTURE"
ws.Cells(i, "J").Value = "A RELANCER"
Case "LETTREE"
ws.Cells(i, "J").Value = "REGLER"
Case "A FACTURER"
ws.Cells(i, "J").Value = "A FACTURER"
Case Else
ws.Cells(i, "J").Value = "NON TRAITE"
End Select
' Mettre à jour la colonne L en fonction de la colonne J
Select Case ws.Cells(i, "J").Value
Case "A RELANCER", "A FACTURER"
' "A RELANCER" ou "A FACTURER" en police blanche avec un remplissage en rouge
ws.Cells(i, "L").Value = "NON TRAITE"
ws.Cells(i, "L").Font.Color = RGB(255, 255, 255) ' Police blanche
ws.Cells(i, "L").Interior.Color = RGB(255, 0, 0) ' Fond rouge
ws.Cells(i, "L").Font.Bold = True ' Gras
Case "REGLER"
' "REGLER" en police noire avec un remplissage en vert
ws.Cells(i, "L").Value = "TRAITE"
ws.Cells(i, "L").Font.Color = RGB(0, 0, 0) ' Police noire
ws.Cells(i, "L").Interior.Color = RGB(0, 255, 0) ' Fond vert
ws.Cells(i, "L").Font.Bold = True ' Gras
End Select
' Mettre à jour la colonne E en fonction de la colonne L
If ws.Cells(i, "L").Value = "TRAITE" Then
' Afficher le mois et l'année dans la colonne E
ws.Cells(i, "E").Value = Format(currentDate, "mmmm yyyy")
Else
' Réinitialiser la colonne E si ce n'est pas "TRAITE"
ws.Cells(i, "E").Value = ""
End If
' Calculer le montant multiplié par 3 % dans la colonne G
ws.Cells(i, "G").Value = ws.Cells(i, "B").Value * 0.03 & " €"
' Calculer la nouvelle date en colonne I en ajoutant la date en colonne D avec le nombre en colonne H
ws.Cells(i, "I").Value = ws.Cells(i, "D").Value + ws.Cells(i, "H").Value
End If
Next i
For i = 2 To lastRow
If ws.Cells(i, "D").Value <= currentDate And IsNumeric(ws.Cells(i, "H").Value) Then
' Calculer les jours restants
daysRemaining = DateDiff("d", currentDate, ws.Cells(i, "I").Value)
' Afficher les jours restants en colonne K
ws.Cells(i, "K").Value = daysRemaining
' Ajouter les détails à la variable de message uniquement si la colonne L n'est pas "TRAITE"
If ws.Cells(i, "L").Value <> "TRAITE" Then
message = message & "FACTURE NON REGLEE - " & ws.Cells(i, "A").Value & vbCrLf & "Jours restants : " & daysRemaining & " jours" & vbCrLf
nonRegleCount = nonRegleCount + 1 ' Incrémenter le compteur
End If
End If
Next i
' Afficher toutes les informations en une seule MsgBox avec le nombre de factures non réglées dans l'en-tête
MsgBox "Nombre de factures non réglées : " & nonRegleCount & vbCrLf & vbCrLf & message, vbCritical, "Relance"
End Sub