Bonjour xUpsilon,
J'ai adapté ton code sur mon fichier final, mais rien ne se passe, pas d'erreur annoncée mais pourtant la macro tourne dans le vide on dirait.
Je pense donc qu'il s'agir d'un problème de fichier de source ou de destination mais je ne trouve pas quoi.
Voici le code que j'ai réécris :
Const sWs_Source As String = "Données"
Const sWs_Destination As String = "Résultats"
Const sWs_Listes As String = "Liste Fournisseurs"
Const sCol_FrnUsage As String = "Q"
Const sCol_ReseauBud As String = "T"
Const sCol_Date As String = "D"
Const sDer_Col As String = "AD"
Const nPremlig As Integer = 2
Sub Trifrnfactu()
Dim nLig, nLigInc, nLigNom As Long
Dim nDerLig As Long
Dim oWs_Source As Excel.Worksheet
Set oWs_Source = ThisWorkbook.Worksheets(sWs_Source)
Dim oWs_Destination As Excel.Worksheet
Set oWs_Destination = ThisWorkbook.Worksheets(sWs_Destination)
Dim oWs_Listes As Excel.Worksheet
Set oWs_Listes = ThisWorkbook.Worksheets(sWs_Listes)
Dim Tablo As Variant
Dim sDate_Inf, sDate_Sup As String
sDate_Inf = InputBox("Quelle est la date limite inférieure de la sélection ? (format jj/mm/aaaa)")
Date_Inf = DateSerial(CInt(Right(sDate_Inf, 4)), CInt(Mid(sDate_Inf, 4, 2)), CInt(Left(sDate_Inf, 2)))
sDate_Sup = InputBox("Quelle est la date limite supérieure de la sélection ? (format jj/mm/aaaa)")
Date_Sup = DateSerial(CInt(Right(sDate_Sup, 4)), CInt(Mid(sDate_Sup, 4, 2)), CInt(Left(sDate_Sup, 2)))
nLigInc = 1
nDerLig = oWs_Source.Range(sCol_FrnUsage & Rows.Count).End(xlUp).Row
nDerLigListes = oWs_Listes.Range("A" & Rows.Count).End(xlUp).Row
Tablo = oWs_Source.Range("A" & nPremlig & ":" & sDer_Col & nDerLig)
For nLig = nPremlig To nDerLig
On Error Resume Next
oColl_Noms.Add oWs_Source.Range(sCol_Nom & nLig), oWs_Source.Range(sCol_Nom & nLig)
On Error GoTo 0
Next nLig
For nLigListes = 2 To nDerLigListes
For nLig = LBound(Tablo) To UBound(Tablo)
If Tablo(nLig, Asc(sCol_FrnUsage) - 64) = oWs_Listes.Range("A" & nLigListes) And InStr(oWs_Listes.Range("B" & nLigListes), Tablo(nLig, Asc(sCol_ReseauBud) - 64)) And Tablo(nLig, Asc(sCol_Date) - 64) >= Date_Inf And Tablo(nLig, Asc(sCol_Date) - 64) <= Date_Sup Then
For nCol = LBound(Tablo, 2) To UBound(Tablo, 2)
oWs_Destination.Cells(nLignInc, nCol) = Tablo(nLig, nCol)
Next nCol
nLigInc = nLigInc + 1
End If
Next nLig
nLigInc = nLigInc + 1
Next nLigListes
End Sub
Sub test()
Debug.Print (InSr(oWs_Listes.Range("B" & 1), Tablo(2, Asc("C") - 64)))
End Sub