Bonjour, j'ai un tableau excel qui se nomme "Bd" qui prends ces données dans d'autres tableaux sur d'autres feuilles du même classeur dans lequel figure divers éléments:
voir le fichier .xls joint

Dans mon code j'ouvre les fichiers ou je souhaite copier les données, je filtre le tableau "Bd" afin d'avoir uniquement les valeurs Réf: PP (colonne D). Ensuite, ce que j'aimerais faire c'est une boucle qui en fonction du Nom (colonne C), par exemple :"moi", sélectionne la plage qui correspond aux Colonnes E à K et ceci pour chaque ligne qui correspond au nom "moi", de copier cette plage et la coller dans un autre classeur.
j'ai mis en place une macro (voir ci dessous) manuellement qui fonctionne mais si dans mes tableaux sources j'insère d'autres lignes, cela modifie mon tableau "Bd" et m'oblige à rectifier manuellement chq plage de la macro. je voudrais donc automatiser ces opérations, j'espère avoir été clair.
Seulement je suis débutant en VBA et je ne maitrise pas encore les instructions for ou if.
J'utilise Excel 2007
merci de votre aide A+++

voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub ENVOYERVERS()
'
' ouvrirfichier Macro
'
 
'
    Workbooks.Open Filename:= _
        "C:\Documents and Settings\Rv\Bureau\fpp.xlsx"
     Workbooks.Open Filename:= _
        "C:\Documents and Settings\RV\Bureau\SsdPP.xlsx"
 
    ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlHorizontal
    Windows.Arrange ArrangeStyle:=xlHorizontal
 
 
' ENVOYERVERS Macro
'
 
    Windows("dabeta.xlsm").Activate
 
    ActiveSheet.ListObjects("Bd").Range.AutoFilter Field:=3, Criteria1:="PP"
    ActiveWorkbook.Worksheets("Bd").ListObjects("Bd").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Bd").ListObjects("Bd").Sort.SortFields.Add Key:= _
        Range("Bd[[#All],[Noms]]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Bd").ListObjects("Bd").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
'Je sélectionne cette plage en visualisant le tableau sur la feuille. le but de ma demande est d'automatiser cette sélection !!!!!   
 
Range("E6:K126").Select
    Selection.Copy
    Windows("fpp.xlsx").Activate
    Sheets("H").Select
    Range("B6").Select
    ActiveSheet.Paste
    Range("D3").Select
    Windows("dabeta.xlsm").Activate
    Range("G6:G126").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("SsdPP.xlsx").Activate
    Sheets("AdPP").Select
    Range("B3").Select
    ActiveSheet.Paste
 
 
    Windows("dabeta.xlsm").Activate
    Range("E127:K247").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("fpp.xlsx").Activate
    Sheets("J").Select
    Range("B6").Select
    ActiveSheet.Paste
    Range("D3").Select
    Windows("dabeta.xlsm").Activate
    Range("G127:G247").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("SsdPP.xlsx").Activate
    Sheets("AdPP").Select
    Range("C3").Select
    ActiveSheet.Paste
 
   ' JE REPETE LE CODE CI DESSUS UNE DIZAINE DE FOIS
 
    Windows("dabeta.xlsm").Activate
    ActiveSheet.ListObjects("Bd").Range.AutoFilter Field:=3
 
    Range("B4").Select
 
 
End Sub