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
Partager