Bonjour,
Je viens sur ce forum ayant des petits soucis sur mon code VBA.
Je vous explique brièvement le problème.
J'ai un fichier source contenant 3 feuilles (on va dire A, B et C). Chaque feuille contient l'identifiant d'un groupe (16 groupes) et d'autres colonnes qui diffèrent selon la feuille A B ou C.
J'ai tout d'abord créé un code VBA permettant de transformer ces 3 feuilles en 48 feuilles (une feuille par groupe et par feuille (16 feuilles pour A, 16 pour B et 16 pour C)
Voici le code utilisé :Ensuite j'aimerais coller les feuilles pour chaque groupe dans un nouveau classeur (il y a 3 feuilles pour un groupe)
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 Private Sub CommandButton1_Click() Dim i As Integer Dim j As Integer Dim maxfeuil As Integer, m As Integer maxfeuil = Sheets.Count For m = 1 To maxfeuil Sheets(m).Activate For i = 1 To 9 Range("B1").Activate Selection.AutoFilter ActiveSheet.Range("$A$1:$O$428").AutoFilter Field:=2, Criteria1:="10" & i Range("A1:AD428").Select Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Paste Sheets(m).Select Application.CutCopyMode = False Selection.AutoFilter Next For j = 10 To 16 Range("B1").Activate Selection.AutoFilter ActiveSheet.Range("$A$1:$O$428").AutoFilter Field:=2, Criteria1:="1" & j Range("A1:AD428").Select Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Paste Sheets(m).Select Application.CutCopyMode = False Selection.AutoFilter Next Next End Sub
Ainsi je dois obtenir à la fin 16 classeurs avec 3 feuilles (A, B et C) pour chaque groupe. (Exemple : un premier classeur avec 3 feuilles, A B et C avec les info du groupe 1, un deuxième classeur avec 3 feuilles, A B et C avec les infos du groupe 2, et ainsi de suite jusqu'au groupe 16).
Le problème est que je dois copier coller les feuilles correspondante. Donc après mon premier code, j'ai 48 feuilles, je dois donc pour le premier classeur copier coller les feuilles 4, 20 et 36, pour le deuxième classeur les feuilles 5,21 et 37, pour le 3e, les feuilles 6, 22 et 38 et ainsi de suite.
Voici mon ébauche de code, je reste coincé..
Merci par avance !!!!
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 Private Sub CommandButton3_Click() Dim i As Integer Dim Cible As Workbook Dim Ws As Worksheet Application.DefaultSaveFormat = xlOpenXMLWorkbook For i = 1 To 16 'Création des 16 classeurs Set Cible = Application.Workbooks.Add For Each Ws In ThisWorkbook.Worksheets 'dans cette étape que ça coince Ws.Copy before:=Cible.Worksheets("Feuil1") Next Ws Next i Application.DefaultSaveFormat = xlExcel8 End Sub
Partager