Bonjour,
Je cherche svp de l'aide sur une macro qui ne fonctionne pas comme prévu:
je souhaite copier dans un classeur excel (où se trouve ma macro que je lance) les onglets de plusieurs classeurs qui ont un nom différent (je parle des onglets) de "synthèse", "Portfolio - Detailed Info", "Sheet1", "Sheet2", "Data", "tcd".
ainsi je commence par supprimer dans le classeur ù se trouve ma macro tous les onglets différents de "synthèse".
Puis je défini les endroits où sont mes ficheirs, les onglets des classeurs que je veux copier.
Je fais ensuite un tri par ordre alphabétique.
Ma macro ne copie pas tous mes onglets et copie en doublons certains autres onglets. Pouvez-vous svp m'aider? Je souhaiterais également rajouter une fonction pour que l'onglet "Synthèse" reste le premier onglet.
Pouvez-vous svp m'aider?
Vous trouverez ci-dessous le contenu de ma macro:
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 Sub importDonnées() Dim w As Worksheet Application.DisplayAlerts = False For Each w In ThisWorkbook.Worksheets If w.Name <> "Synthèse" Then w.Delete 'suppression de toutes les feuilles excel préalablement importées End If Next Application.DisplayAlerts = True Dim wkA As Workbook, wkB As Workbook, wkC As Workbook, wkD As Workbook Dim chemin As String, fichier As String Dim j As Long Dim wb As Worksheet, wc As Worksheet, wd As Worksheet Application.ScreenUpdating = False Set wkA = ThisWorkbook ' le dossier qui contient le code et qui va recevoir les données chemin = "F:\CORI-ENE\Mgt-Reporting\Profitability\2017\Actuals\Dépot Wkb COS\" ' adresse du dossier source fichier = "Synthèse Médérick.xlsx" ' nom du dossier source Workbooks.Open chemin & fichier Set wkB = ActiveWorkbook For Each wb In ThisWorkbook.Worksheets If wb.Name <> "Portfolio - Detailed Info" And wb.Name <> "Sheet1" And wb.Name <> "Sheet2" And wb.Name <> "Data" And wb.Name <> "tcd" Then wb.Copy After:=wkA.Sheets("Synthèse") 'l'onglet à copier nommée et le placement dans le dossier qui recevra les données après l'onglet Synthèse End If Next wkB.Close True 'fermer le dossier source chemin = "F:\CORI-ENE\Mgt-Reporting\Profitability\2017\Actuals\Dépot Wkb COS\" ' adresse du dossier source fichier = "Synthèse Antonio.xlsx" ' nom du dossier source Workbooks.Open chemin & fichier Set wkC = ActiveWorkbook For Each wc In ThisWorkbook.Worksheets If wc.Name <> "Portfolio - Detailed Info" And wc.Name <> "Sheet1" And wc.Name <> "Sheet2" And wc.Name <> "Data" And wc.Name <> "tcd" Then wc.Copy After:=wkA.Sheets("Synthèse") 'les onglets à copier et le placement dans le dossier qui recevra les données après l'onglet Synthèse End If Next wkC.Close True 'fermer le dossier source chemin = "F:\CORI-ENE\Mgt-Reporting\Profitability\2017\Actuals\Dépot Wkb COS\" ' adresse du dossier source fichier = "Synthèse Alexandre.xlsx" ' nom du dossier source Workbooks.Open chemin & fichier Set wkD = ActiveWorkbook For Each wd In ThisWorkbook.Worksheets If wd.Name <> "Portfolio - Detailed Info" And wd.Name <> "Sheet1" And wd.Name <> "Sheet2" And wd.Name <> "Data" And wd.Name <> "tcd" Then wkD.Sheets.Copy After:=wkA.Sheets("Synthèse") 'les onglets à copier et le placement dans le dossier qui recevra les données après l'onglet Synthèse End If Next wkD.Close True 'fermer le dossier source For n = 1 To Sheets.Count For o = i + 1 To Sheets.Count If UCase(Sheets(n).Name) > UCase(Sheets(o).Name) Then Sheets(o).Move before:=Sheets(n) Next o Next n Application.ScreenUpdating = True End Sub
Partager