Bonjour,
Voici mon draft de code avec lequel je souhaiterais copier, à partir d'un classeur source, une feuille+la dernière feuille dans un nouveau classeur cible qui sera situé dans le même répertoire que la source et dont le nom sera la concaténation du nom du fichier source initial et du nom de la 1ère feuille copiée. Le tout devant boucler afin d'obtenir autant de nouveaux fichiers que d'onglets (-1 puisque à chaque fois c'est la feuille active et la dernière feuille du fichier source qui doivent être copiées).
Pour info, les différentes feuilles du fichier source ont été créées à partir d'un tableau croisé dynamique (via un filtre automatique générant un onglet par entrée du filtre). J'ai aussi désactivé les fonctions 'drill-down' et filtre du tableau croisé à l'aide d'un autre code que je souhaiterais à terme également inclure dans la boucle ci-dessous pour que tout soit fait automatiquement.
A ce stade, l'éditeur VBA m'indique qu'il ne trouve pas mon 'if', je pense que ça doit venir du fait que je n'ai pas indiqué d'argument après le 'else' puis que je veux qu'il continue à dérouler le code. J'avoue qu'étant débutante en VBA, je bloque un peu là...
Donc un grand merci d'avance pour vos conseils.
Pandy
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 'copier des onglets dans un nouveau classeur qui sera situé dans le même répertoire que le classeur source_ 'et le nom du nouveau classeur est celui du classeur initial + le nom de la 1ère feuille copiée Sub Copyinnewwkb_test() Dim Wkbsource As Workbook Dim Newwkb As Workbook Dim Newwkbname As String Dim Tabs As Integer Set Wkbsource = ActiveWorkbook Set Newwkb = Workbooks.Add For Tabs = 1 To Wkbsource.Sheets.Count Wkbsource.Sheets(Array(Tabs, Wkbsource.Sheets.Count)).Copy Before:=Newwkb.Sheets(1) Newwkbname = Wkbsource.Path & Wkbsource.Name & " - " & Newwkb.Sheets(1).Name & ".xlsx" Newwkb.SaveAs Newwkbname Newwkb.Save Newwkb.Close Set Newwkb = Nothing If MsgBox("Le classeur", Newwkbname, "a été créé.", "Voulez vous continuer", vbQuestion + vbYesNo) = vbNo Then Exit Sub Else Next Tabs End If End Sub
Partager