Bonjour!!
J'ai un problème de copie de graphes entre classeurs qui me casse bien les @$^&!!?*:
Voici un bout de ma macro excel qui doit faire tout ça:
Dans ce cas, 1 graphe sur 3 est copié. C'est déjà pas drôle.
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 Sub copySheet() 'Macro qui fait une copie du document sans les données 'Author: Kurt-Kobain 'Date: 11/01/2005 'Update: 07/03/2007 Dim sourceBook As Excel.Workbook Dim newFile As Excel.Workbook Dim newSheet As Worksheet Dim indiceGraph As Integer 'Liste des noms des onglets à copier Dim onglets(5) As String onglets(5) = "Plouplou" onglets(4) = "Cuicui" onglets(3) = "Ouafouaf" onglets(2) = "Meoooww" onglets(1) = "Croacroa" Set sourceBook = Application.ActiveWorkbook Set newFile = Workbooks.Add(xlWBATWorksheet) For i = 1 To 5 Set newSheet = newFile.Worksheets("Feuil" & i) newSheet.Name = onglets(i) sourceBook.Sheets(onglets(i)).UsedRange.Copy newSheet.Range("A1") For j = 1 To sourceBook.Sheets(onglets(i)).UsedRange.Columns.Count newSheet.Cells(j).ColumnWidth = sourceBook.Sheets(onglets(i)).Cells(j).ColumnWidth Next For j = 1 To sourceBook.Sheets(onglets(i)).UsedRange.Rows.Count newSheet.Rows(j).RowHeight = sourceBook.Sheets(onglets(i)).Rows(j).RowHeight Next 'indiceGraph = 0 'For Each Graph In sourceBook.Sheets(onglets(i)).ChartObjects ' indiceGraph = indiceGraph + 1 ' Graph.CopyPicture ' newSheet.PasteSpecial Link:=False, DisplayAsIcon:=False ' newSheet.DrawingObjects(indiceGraph).Left = Graph.Left ' newSheet.DrawingObjects(indiceGraph).Top = Graph.Top 'Next Graph newFile.Worksheets.Add Count:=1, Type:=xlWorksheet Next newFile.SaveAs (sourceBook.Path & "\"Lights.xls") End Sub
Quand je décommente la boucle for (j'ai quand meme tenté un google et une recherche ds Developpez.com), les graphes qui étaient absents dans la première version sont au bon endroit tandis que les autres (ceux qui étaient présents dans la première version) apparaissent tous en haut à gauche...![]()
Merci pour ce démystifiage.
PS: Je ne suis pas expert VBA.
Partager