Bonjour
En fait, il est un peu long mon code, et il fait référence à plusieurs fichiers. Merci en tout cas.
Sub En_cours_du_mois()
Dim balise As Boolean
Dim nbre As Integer, nbre2 As Integer, i As Integer, j As Integer, k As Integer, reponse As Integer
Dim wsEM As Worksheet, wsSF As Worksheet, wsLf As Worksheet, wsECF As Worksheet
Dim liste As Range
Dim valeur As Variant
Set wsEM = Workbooks("Enregistrement du mois").Worksheets("feuil2")
Set wsSF = Workbooks("Liste fournisseurs_test mdb").Worksheets("Fournisseur")
Set wsLf = ThisWorkbook.Worksheets("Liste fournisseur")
Set wsECF = ThisWorkbook.Worksheets("en cours ouvert fin de mois")
Application.WindowState = xlMinimized
wsLf.Cells.ClearContents
wsSF.Activate
Cells.Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
wsLf.Activate
Range("B1").Select
ActiveSheet.Paste
'Calcul du nombre de fournisseurs
nbre = wsLf.Cells(Rows.Count, 2).End(xlUp).Row - 1
Set liste = wsLf.Cells(2, 2).Resize(nbre, 3)
'Création du nom de la plage de cellule des fournisseurs
ThisWorkbook.Names.Add Name:="liste", RefersToR1C1:=liste
'Calcul du nombre d'en_cours du mois
nbre = wsECF.Cells(Rows.Count, 1).End(xlUp).Row - 1
'''''Filtre fournisseurs'''''
'Calcul intermédiaire des valeurs de RechercheV
wsECF.Cells(2, 32).Resize(nbre, 1).FormulaR1C1 = "=VLOOKUP(RC[-11],liste,1,0)"
'Tri des cadences en fonction du résultat de la RechercheV
Selection.NumberFormat = "@"
wsECF.Activate
wsECF.Range("AF2").Select
wsECF.Cells(2, 1).Resize(nbre, 32).Sort Key1:=Range("AF2"), Order1:=xlAscending
'Calcul du nombre de fournisseurs hors contexte
nbre2 = WorksheetFunction.CountIf(wsECF.Cells(2, 32).Resize(nbre, 1), "=#N/A")
'Suppression des cadences hors contexte
wsECF.Cells(nbre - nbre2 + 2, 1).Resize(nbre, 34).Delete Shift:=xlUp
'Stockage du mois en cours
j = wsEM.Cells(1, 2).Value
k = wsEM.Cells(1, 3).Value
Suppression des encours ultérieurs au mois concerné
For i = 1 To nbre
If (Year(wsECF.Cells(i + 1, 11).Value) > k Or ((Month(wsECF.Cells(i + 1, 11).Value) > j And Year(wsECF.Cells(i + 1, 11).Value = k)))) Then
wsECF.Rows(i + 1 & ":" & i + 1).EntireRow.Delete
End If
Next i
End Sub
Cordialment