Sub Macro1()
Dim cd As Workbook 'déclare la variable cd (Classeur Destination)
Dim od1 As Object 'déclare la variable od1 (Onglet Destination 1)
Dim od2 As Object 'déclare la variable od2 (Onglet Destination 2)
Dim od3 As Object 'déclare la variable od3 (Onglet Destination 3)
Dim ch As String 'déclare la variable ch (CHemin)
Dim sf As Object 'déclare la variable sf (Système de Fichiers)
Dim d As Object 'déclare la variable d (Dossier)
Dim o As Object 'déclare la variable o (Onglets)
Dim fs As Object 'déclare la variable fs (FichierS)
Dim f As Object 'déclare la variable f (Fichier)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os1 As Object 'déclare la variable os (Onglet Source 1)
Dim os2 As Object 'déclare la variable os (Onglet Source 2)
Dim os3 As Object 'déclare la variable os (Onglet Source 3)
Dim dest1 As Range 'déclare la variable dest1 (cellule de DESTination 1)
Dim dest2 As Range 'déclare la variable dest2 (cellule de DESTination 2)
Dim dest3 As Range 'déclare la variable dest3 (cellule de DESTination 3)
Dim plc As Range 'déclare la variable plc (PLage sous Condition)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set cd = ThisWorkbook 'définit le classeur destination cd
ch = cd.Path 'définit la chemin
Set od1 = cd.Sheets("Récap cuilliere") 'définit l'onglet de destination od1
Set od2 = cd.Sheets("Récap couteau") 'définit l'onglet de destination od2
Set od3 = cd.Sheets("Récap Fourchettes") 'définit l'onglet de destination od3
'suppression des anciennes données
od1.Range("E1:" & od1.Cells(5, Application.Columns.Count).Address(0, 0)).EntireColumn.Delete 'supprime les colonnes E à... dernière
od2.Range("E1:" & od2.Cells(5, Application.Columns.Count).Address(0, 0)).EntireColumn.Delete 'supprime les colonnes E à... dernière
od3.Range("E1:" & od3.Cells(5, Application.Columns.Count).Address(0, 0)).EntireColumn.Delete 'supprime les colonnes E à... dernière
Set sf = CreateObject("Scripting.FileSystemObject") 'définit la variable sf
Set d = sf.getfolder(ch) 'définit la variable d
Set fs = d.Files 'définit la variable fs
For Each f In fs 'boucles sur touts les fichiers du dossier d
'condition : si le fichier f à une extension ".xls" et commence par "Méto site"
If Right(f.Name, 4) = ".xls" And Left(f.Name, 9) = "Méto site" Then
'définit dest1 (E3 si E3 est vide, sinon la première colonne vide de la ligne 3 décalée de 5 colonnes à droite)
Set dest1 = IIf(od1.Range("E3").Value = "", od1.Range("E3"), od1.Cells(3, Application.Columns.Count).End(xlToLeft).Offset(0, 5))
'définit dest2 (E3 si E3 est vide, sinon la première colonne vide de la ligne 3 décalée de 3 colonnes à droite)
Set dest2 = IIf(od2.Range("E3").Value = "", od2.Range("E3"), od2.Cells(3, Application.Columns.Count).End(xlToLeft).Offset(0, 3))
'définit dest3 (E3 si E3 est vide, sinon la première colonne vide de la ligne 3 décalée de 5 colonnes à droite)
Set dest3 = IIf(od3.Range("E3").Value = "", od3.Range("E3"), od3.Cells(3, Application.Columns.Count).End(xlToLeft).Offset(0, 5))
Workbooks.Open f 'ouvre le fichier
Set cs = ActiveWorkbook 'définit le classeur source cs
Set os1 = cs.Sheets("cuilliere") 'définit l'onglet source os1
Set os2 = cs.Sheets("couteau") 'définit l'onglet source os2
Set os3 = cs.Sheets("Fourchettes") 'définit l'onglet source os3
Set plc = IIf(os1.Range("B7").Value = "toto", os1.Range("F4:I32"), os1.Range("E4:H32")) 'définit la plage plc (à adapter car j'ai pas bien compris)
'récap cuillères
dest1.Value = cs.Name 'place le nom du classeur
plc.Resize(plc.Rows.Count, plc.Columns.Count + 1).Copy 'copie la plage plc plus une colonne
dest1.Offset(1, 0).PasteSpecial (xlPasteColumnWidths) 'colle la largeur des colonnes
plc.Copy dest1.Offset(1, 0) 'copie/colle la plage plc
dest1.Offset(4, 0).Value = os1.Range("B7").Value 'récupère le nom correspondant à Vita A
dest1.Offset(13, 0).Value = os1.Range("B16").Value 'récupère le nom correspondant à Vita B
dest1.Offset(23, 0).Value = os1.Range("B26").Value 'récupère le nom correspondant à Vita C
'récap couteaux
dest2.Value = cs.Name 'place le nom du classeur
os2.Range("E4:G43").Copy 'copie la plage utile plus une colonne
dest2.Offset(1, 0).PasteSpecial (xlPasteColumnWidths) 'colle la largeur des colonnes
os2.Range("E4:F43").Copy dest2.Offset(1, 0) 'copie/colle la plage utile
dest2.Offset(4, 0).Value = os2.Range("B7").Value 'récupère le nom correspondant à Vita A
dest2.Offset(15, 0).Value = os2.Range("B18").Value 'récupère le nom correspondant à Vita b
dest2.Offset(26, 0).Value = os2.Range("B29").Value 'récupère le nom correspondant à Vita A
dest2.Offset(37, 0).Value = os2.Range("B40").Value 'récupère le nom correspondant à Inter MAR
'récap fourchettes
dest3.Value = cs.Name 'place le nom du classeur
os3.Range("E4:I35").Copy 'copie la plage utile plus une colonne
dest3.Offset(1, 0).PasteSpecial (xlPasteColumnWidths) 'colle la largeur des colonnes
os3.Range("E4:H35").Copy dest3.Offset(1, 0) 'copie/colle la plage utile
dest3.Offset(4, 0).Value = os3.Range("B7").Value 'récupère le nom correspondant à Vita b
dest3.Offset(13, 0).Value = os3.Range("B16").Value 'récupère le nom correspondant à Vita b
dest3.Offset(25, 0).Value = os3.Range("B28").Value 'récupère le nom correspondant à Vita b
cs.Close 'ferme le classeur de données
End If 'fin de la condition
Next f 'prochain classeur de la boucle
od3.Select: Range("A1").Select 'sélectionne la cellule A1
od2.Select: Range("A1").Select 'sélectionne la cellule A1
od1.Select: Range("A1").Select 'sélectionne la cellule A1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub