Bonjour franck, forum,
Un peu long le temps de réponse mais voici une macro qui résout les points 2,3 et 4.
Remplace la macro existante par celle-ci :
'Option Explicit
Sub test()
Dim critDeb As String, critFin As String, crit2 As String
Dim i As Long, x As Long
critDeb = Cells(1, 3) 'critère semaine en C1
critFin = Cells(1, 6) 'critère semaine en F1
crit2 = Cells(2, 9) 'critère année en I2
Application.ScreenUpdating = False
Rows("5:65536").Delete Shift:=xlUp
Set maitre = ActiveWorkbook
Path = ThisWorkbook.Path & "\"
ChDir Path
'fichier = Dir(Path & "*.xls")
fichier = Application.GetOpenFilename("fichiers XLS,*.xls")
'Do While fichier <> "" And fichier <> "rech_FAD_v1.xls"
Do While fichier <> False And InStr(fichier, ThisWorkbook.Name) = 0
i = Range("A65536").End(xlUp).Row + 1
'Workbooks.Open Filename:=Path & fichier
Workbooks.Open Filename:=fichier
nomFichier = ActiveWorkbook.Name
Sheets("FAD").Activate
For x = critDeb To critFin
[A1].AutoFilter Field:=3, Criteria1:=x
[A1].AutoFilter Field:=1, Criteria1:=crit2
On Error Resume Next 'gère l'erreur lorsqu'il ne trouve pas le numéro de semaine
Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
maitre.Sheets("rech_FAD").[A65000].End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteAllExceptBorders
Next x
Workbooks(nomFichier).Close savechanges:=False
Do While Cells(i, 1) <> ""
Cells(i, 11) = fichier 'pour mettre le chemin du fichier
i = i + 1
Loop
'mets les bordures
With Range("A" & i - 1 & ":I" & i - 1 & ",K" & i - 1).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
'fichier = Dir
fichier = Application.GetOpenFilename("fichiers XLS,*.xls")
Loop
End Sub
Pour le point 1, je t'avoue que je ne sais pas trop faire.
Je vais tenter d'y réfléchir! Bien que pas trop de temps ces temps-ci.
A+