Copie coller avec un pas
mateo44
Messages postés
11
Statut
Membre
-
mateo44 Messages postés 11 Statut Membre -
mateo44 Messages postés 11 Statut Membre -
Bonjour,
Je vous remercie par avance pour les réponses et aides éventuelles que vous allez m'apporter.
Mon classeur excel comporte 3 feuilles que l'on appellera "1" "2" et "3". Chaque feuille comporte un nombre de colonnes différentes mais un nombre de lignes identiques.
J'ai deux codes écrit :
- Le premier qui permet de créer 16 feuilles à partir de la feuille "1" sur le même classeur (une feuille par groupe, il y a 16 groupes), de même pour la feuille "2" et "3", ainsi mon premier code me créer 16*3 feuilles sur un même classeur (48 feuilles).
- un deuxième code qui me permet de copier coller les feuilles d'un classeur à un autre.
Mon objectif, 2 possibilités possibles :
Soit utiliser le code 1 puis copier coller les feuilles par 3 dans un nouveau classeur, d'où une première question :
--> J'ai 48 feuilles, comment je fais pour copier coller les 3 premières feuilles dans un classeur, puis les 3 suivantes dans un autre puis les 3 suivantes, etc..
Soit séparer (via filtre et autres je ne sas pas) et les coller directement dans un autre classeur (ce que je ne sais pas faire non plus)
Avez vous des idées ?
Je vous remercie par avance..
Je vous remercie par avance pour les réponses et aides éventuelles que vous allez m'apporter.
Mon classeur excel comporte 3 feuilles que l'on appellera "1" "2" et "3". Chaque feuille comporte un nombre de colonnes différentes mais un nombre de lignes identiques.
J'ai deux codes écrit :
- Le premier qui permet de créer 16 feuilles à partir de la feuille "1" sur le même classeur (une feuille par groupe, il y a 16 groupes), de même pour la feuille "2" et "3", ainsi mon premier code me créer 16*3 feuilles sur un même classeur (48 feuilles).
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
- un deuxième code qui me permet de copier coller les feuilles d'un classeur à un autre.
Private Sub CommandButton3_Click()
Dim Cible As Workbook
Dim Ws As Worksheet
Application.DefaultSaveFormat = xlOpenXMLWorkbook
Set Cible = Application.Workbooks.Add
For Each Ws In ThisWorkbook.Worksheets
Ws.Copy Before:=Cible.Worksheets("Feuil1")
Next Ws
Application.DefaultSaveFormat = xlExcel8
End Sub
Mon objectif, 2 possibilités possibles :
Soit utiliser le code 1 puis copier coller les feuilles par 3 dans un nouveau classeur, d'où une première question :
--> J'ai 48 feuilles, comment je fais pour copier coller les 3 premières feuilles dans un classeur, puis les 3 suivantes dans un autre puis les 3 suivantes, etc..
Soit séparer (via filtre et autres je ne sas pas) et les coller directement dans un autre classeur (ce que je ne sais pas faire non plus)
Avez vous des idées ?
Je vous remercie par avance..
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Copie coller avec un pas
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Retrouver un copier-coller android - Guide
1 réponse
Private Sub CommandButton3_Click()
Dim i As Integer
Dim j As Integer
Dim Cible As Workbook
Dim Ws As Worksheet
Application.DefaultSaveFormat = xlOpenXMLWorkbook
For i = 1 To 16
Set Cible = Application.Workbooks.Add
For j = 4 To 48
For Each Ws In ThisWorkbook.Worksheets
Ws.Copy before:=Cible.Worksheets("Feuil1")
Next Ws
Next i
Application.DefaultSaveFormat = xlExcel8
End Sub
Voici une ébauche de code qui permet de créer 16 classeurs, j'aimerais maintenant pouvoir modifier le
For Each Ws In ThisWorkbook.Worksheets
Ws.Copy before:=Cible.Worksheets("Feuil1")
Next Ws
Pour dire "tu me copie colle la feuille 4 à 6 dans un classeur, puis 7 à 9 dans un autre, etc.."
Je pensais utiliser le "step" mais si je fais
for j = 4 to 48 step 3il va me prendre que la 4, la 7, la 9 ....