Rechercher : dans
Par :

VBA - actualisation d'image dans un userform

Dernière réponse le 14 mai 2009 à 18:34:34 antoshf1, le 14 mai 2009 à 11:16:47 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je suis débutant en VBA et j'ai un problème avec un userform.

J'ai un premier userform qui permet de générer des données sous excel. J'utilise ensuite ces données pour créer un graphique sous excel, qui s'actualise en fonction de ce que je rentre dans mon userform.

Je voudrais créer un bouton vers un nouveau userform qui ne contiendrait que le graphique généré, seulement, et c'est là qu'est mon problème, je ne parviens pas à afficher dans ce fichier le graphique de manière dynamique : je crée un objet image et je copie colle le graph excel dans le source de l'image et le graphique ne s'actualise pas (c'est tjrs le premier généré qui s'affiche).

Comment faire pour que mon graphique/image s'actualise de manière dynamique ?

Merci d'avance pour vos réponses

Configuration: Windows Vista
Google Chrome

Meilleures réponses pour « VBA actualisation d'image dans un userform » dans :
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...

1

Bidouilleu_R, le 14 mai 2009 à 13:49:55

Bonjour,

j'ai fait un programme qui donne ça : à partir d'un userform

Private Sub BoutonPrecedent_Click()
If ChartNum = 1 Then
ChartNum = 5
Else
ChartNum = ChartNum - 1
UpdateChart
End If

If ChartNum Mod 2 = 0 Then
ImageName2 = ThisWorkbook.Path & Application.PathSeparator & "logo_1-mini.bmp"
' l'image Temp ou logo se trouve au même endroit que le fichier (serveur ou en local)
Image2.Picture = LoadPicture(ImageName2)
Image2.ControlTipText = "Visualisation Graphique"
Else
Image2.Picture = LoadPicture(ImageName2)
Image2.ControlTipText = "Réalisation : : )"
End If
DoEvents
End Sub

Private Sub BoutonSuivant_Click()
If ChartNum = 5 Then
ChartNum = 1
Else
ChartNum = ChartNum + 1
UpdateChart
End If

If (ChartNum Mod 2) = 0 Then
ImageName2 = ThisWorkbook.Path & Application.PathSeparator & "logo1-mini.bmp"
' l'image se trouve au même endroit que le fichier
Image2.Picture = LoadPicture(ImageName2)
Image2.ControlTipText = "Visualisation Graphique"
Else
ImageName2 = ThisWorkbook.Path & Application.PathSeparator & "LogoRmini.bmp"
Image2.Picture = LoadPicture(ImageName2)
Image2.ControlTipText = "Réalisation : )"
End If

DoEvents

End Sub

Private Sub UpdateChart()
Set CurrentChart = Sheets("Evolution").ChartObjects(ChartNum).Chart
CurrentChart.Parent.Width = 480 ' taille x
CurrentChart.Parent.Height = 300 ' taille y

' Sauve le graphique en format GIF
Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export Filename:=Fname, FilterName:="GIF"

' Affiche le graphique
Image1.Picture = LoadPicture(Fname)
End Sub



C'est la dernière partie qui t'interesse predent et suivant te dise comment l'utiliser.

bon travail
A+
R

Répondre à Bidouilleu_R

2

antoshf1, le 14 mai 2009 à 14:25:35

Merci beaucoup pour votre réponse !

Voilà j'ai donc copié ça dans mon nouveau userform ds leqiel je veux mettre mon graphique :

Private Sub UpdateChart()
Set CurrentChart = Sheets("P&L_BTFL_1S").ChartObjects(ChartNum).Chart
CurrentChart.Parent.Width = 480 ' taille x
CurrentChart.Parent.Height = 300 ' taille y

' Sauve le graphique en format GIF
Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export Filename:=Fname, FilterName:="GIF"

' Affiche le graphique
Image1.Picture = LoadPicture(Fname)
End Sub


Et je ne sais pas quoi mettre dans ChartObjects(ChartNum).Chart, sachant que mon graphique (qd je clique dessus) s'appelle apparement "Graphique 1".

Savez vous ce que je dois modifier ?

Encore merci

Répondre à antoshf1

3

 Bidouilleu_R, le 14 mai 2009 à 18:34:34

Set CurrentChart = Sheets("P&L_BTFL_1S").ChartObjects(ChartNum).Chart
chartnum contient le numero d'index de chaque graphique.
si tu en qu'un tu mets 1

moi j'en avais 5.
c'est pourquoi dans les modules boutonsuivant_click
on trouve
If ChartNum = 5 Then
ChartNum = 1
else....

Set CurrentChart = Sheets("P&L_BTFL_1S").ChartObjects(ChartNum).Chart

'cette ligne définit l'objet
Set CurrentChart = Sheets("Evolution").ChartObjects(ChartNum).Chart
CurrentChart.Parent.Width = 480 ' taille x
CurrentChart.Parent.Height = 300 ' taille y

' Sauve le graphique en format GIF Chemin + nom

Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
'Procedure d'export
CurrentChart.Export Filename:=Fname, FilterName:="GIF"

' Affiche le graphique

Image1.Picture = LoadPicture(Fname)

Répondre à Bidouilleu_R