Petits soucis VBA concernant "Worksheet"
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é :
Code:
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 |
Ensuite j'aimerais coller les feuilles pour chaque groupe dans un nouveau classeur (il y a 3 feuilles pour un groupe)
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é..
Code:
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 |
Merci par avance !!!!