VBA - actualisation d'image dans un userform

antoshf1 -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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

3 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    0
  2. antoshf1
     
    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
    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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)
    0