VBA: Copie d'un Spacechart à un autre
Galgante
-
Galgante -
Galgante -
Bonjour,
J'ai 2 SpaceChart dans mon code, Spacechart1 déjà créé dans Userform1 et SpaceChart2 encore vierge (dans Userform2). Je souhaite copier tout le contenu, les séries, mises en forme,... du premier SpaceChart vers le second, quelqu'un aurait-il une idée svp?
Le code, pour plus de précision...
Je souhaiterais faire quelquechose comme ( dans une autre UserForm):
J'ai 2 SpaceChart dans mon code, Spacechart1 déjà créé dans Userform1 et SpaceChart2 encore vierge (dans Userform2). Je souhaite copier tout le contenu, les séries, mises en forme,... du premier SpaceChart vers le second, quelqu'un aurait-il une idée svp?
Le code, pour plus de précision...
'*****Création 1er SpaceChart*****
Public Cht1 As ChChart
Public C1
Private Sub UserForm_Initialize() '************initialize********************************
Dim i As Integer, x As Integer
Dim j As Integer
Dim Tableau(10), Plage(10)
Set C1 = ChartSpace1.Constants
'Ajoute le graphique 1
Set Cht1 = ChartSpace1.Charts.Add
'suppression des séries existantes dans le ChartSpace******************
For i = Cht1.SeriesCollection.Count To 1 Step -1
Cht1.SeriesCollection.Delete i - 1
Next i
'Définit les abscisses(plage de cellules A1:G1)*****************
For i = 0 To 6
Tableau(i) = Cells(1, 1 + i)
Next i
'***********************************************************
With Cht1
'Permet l'affichage des légendes
.HasLegend = True
'Affiche les légendes sous le graphique
.Legend.Position = chLegendPositionBottom
'Attribue un titre
.HasTitle = True
.Title.Caption = "Mon graphique 2D"
End With
'Définit le type de graphique***********************************
'2D
'histogramme en barre
Cht1.Type = C1.chChartTypeBarClustered
'histogramme en colonne
'Création graphique*********************************************
For j = 2 To 11
'************CHT1***************************************
'Création de la 1ere série
If Cht1.SeriesCollection.Count > 0 Then Cht1.SeriesCollection.Add
'Récupération des ordonnées pour chaque série
For i = 1 To 7
Plage(i) = Cells(j, i)
Next i
With Cht1
'Ajoute le tableau d'abscisses
.SetData C1.chDimCategories, C1.chDataLiteral, Tableau
'Ajoute la légenge pour chaque serie
.SeriesCollection(x).Caption = Cells(j, 8)
'Affiche valeur de chaque point
.SeriesCollection(x).DataLabelsCollection.Add
'Définit la position des valeurs affichées (au dessus par défaut)
'Dans la barre pour cet exemple
.SeriesCollection(x).DataLabelsCollection(0).Position = chLabelPositionCenter
'Les valeurs de l'histogramme seront affichées en couleur blanche.
.SeriesCollection(x).DataLabelsCollection(0).Font.Color = RGB(255, 255, 255)
'Ajoute le tableau d'ordonnées ( Plage() )
.SeriesCollection(x).SetData C1.chDimValues, C1.chDataLiteral, Plage
'Définit la couleur de la série
.SeriesCollection(x).Interior.Color = 50000 * (j + 1)
End With
'************SUITE**************************************
x = x + 1
'Efface le contenu du tableau
Erase Plage
Next j
End Sub
Je souhaiterais faire quelquechose comme ( dans une autre UserForm):
Public chtemp As ChChart
Public ctemp
Private Sub UserForm_Initialize()
Dim i As Integer
Set ctemp = ChartSpace1.Constants
'Ajoute le graphique 1
Set chtemp = ChartSpace1.Charts.Add
For i = 0 to UserForm1.Cht1.SeriesCollection.Count -1
chtemp.SeriesCollection i = UserForm1.Cht1.SeriesCollection i
End Sub
A voir également:
- VBA: Copie d'un Spacechart à un autre
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
1 réponse
Re,
En attendant une solution, j'ai exporté mon graphique dans une image, puis, à la place du 2nd SpaceChart, j'ai mis une image. Voici le code:
Et dans l'init de la 2nd form:
Cdlt.
En attendant une solution, j'ai exporté mon graphique dans une image, puis, à la place du 2nd SpaceChart, j'ai mis une image. Voici le code:
Private Sub btnFocus_Click() '******************************************FOCUS*******************************
Dim Gr As ChartSpace
Dim Largeur As Long, Hauteur As Long
Dim ok As Boolean
nomImage = "C:\grapheTemporaire.gif"
Largeur = 978
Hauteur = 570
'export du chartSpace au format image Gif
ok = False
Do
Select Case InputBox("Entrez le numéro, de 1 à 3 du graphique sur lequel effectuer le focus: ")
Case 1
Set Gr = Me.ChartSpace1
ok = True
Case 2
Set Gr = Me.ChartSpace2
ok = True
Case 3
Set Gr = Me.ChartSpace3
ok = True
Case Else
MsgBox ("Recommencez la sélection")
End Select
Loop While (ok = False)
Application.ScreenUpdating = False
Gr.ExportPicture nomImage, "gif", Largeur, Hauteur
Application.ScreenUpdating = True
UserForm1.Hide
UserFormTest.Show
End Sub
Et dans l'init de la 2nd form:
Private Sub UserForm_Initialize()
Image1.Picture = LoadPicture(nomImage)
End Sub
Cdlt.