Chargement d'images sur UserForm
Bonjour à toutes et tous,
Je rencontre une erreur (erreur 481) lors du chargement d'images sur mon userform. Ces images sont des graphiques préalablement générés sur l'une des feuilles du document. Afin de les charger elles sont stockées dans le dossier "TEMP", puis sélectionnées à l'aide d'une ComboBox.
L'erreur n'apparaît pas à chaque fois, ce que j'ai du mal à comprendre. Un petit coup de pouce n'est donc pas de refus !
Merci d'avance !
Bonjour,
Sans plus d'indication moi je saupoudrerai généreusement un brassée de DoEvents et pourquoi pas un Repaint rien que pour voir...
If IsNumeric(Me.TextBox2.Value) = True Then
If Me.ComboBox2.Value <> "" Then
Set myChart = sh.Shapes(Me.ComboBox2.Value).Chart
myChart.Export VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.gif"
DoEvents
Me.Image2.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.gif")
DoEvents
Me.Repaint
End If
End If
End Sub<A+
Hello Galopin ! Tout d'abord merci pour ton aide. Malgré tout, les évènement DoEvents et Repaint ne règlent pas forcément le souci, je pense avoir mal expliqué le problème.
En fait, je me demande si le dossier "TEMP" n'aurait pas une capacité de stockage maximum, rapidement atteinte dans mon cas (j'arrive à faire apparaître 6 à 8 graphs avant l'erreur). D'ailleurs, sur les 41 choix disponibles dans la combobox 1, seuls 30 sont en mesure de charger. Serait-ce là la capacité maximale du dossier "TEMP" ?
Le fichier sera envoyé à des partenaires, une modification des paramètres de mon pc ne règlera donc pas le souci.
Au fait, toutes les données sont publiques, pas besoin de cacher le doc. Je le remets ici.
Merci à la communauté !
Alors ! Petite maj : En fait, pour que mon code fonctionne, il est nécessaire de "pré-charger" tous les graphs de mes feuilles (en passant simplement dessus afin qu'excel les affiche). Une fois chargées, aucun problème, tout roule !
Nouvelle étape, nouveau problème, je cherche donc désormais un moyen de charger toutes les images de mes feuilles avant le lancement d'une quelconque macro. Une proposition ? :)
Merci encore Galopin !
Dernière update : Problème résolu grâce à l'activation de chaque graph à l'ouverture du fichier !
Charger les graphiques en image sur le userform :
Private Sub Load_Chart1()
Dim sh As Worksheet
Dim myChart As Chart
Set sh = ThisWorkbook.Sheets("GEO")
If IsNumeric(Me.TextBox1.Value) = True Then
If Me.ComboBox1.Value <> "" Then
Set myChart = sh.Shapes(Me.ComboBox1.Value).Chart
myChart.Export VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.jpg"
DoEvents
Me.Image1.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.jpg")
DoEvents
Me.Repaint
End If
End If
Dim dj As Worksheet
Dim monChart As Chart
Set dj = ThisWorkbook.Sheets("PATRIM")
If IsNumeric(Me.TextBox1.Value) = True Then
If Me.ComboBox1.Value <> "" Then
Set myChart = dj.Shapes(Me.ComboBox1.Value).Chart
myChart.Export VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.jpg"
DoEvents
Me.Image2.Picture = LoadPicture(VBA.Environ("TEMP") & Application.PathSeparator & "MYCHART.jpg")
DoEvents
Me.Repaint
End If
End If
End Sub
Activer les graphs à l'ouverture
Private Sub Workbook_Open()
Sheets("GEO").Select
ActiveWindow.SmallScroll Down:=-44
ActiveSheet.ChartObjects("Primovie").Activate
ActiveSheet.ChartObjects("LF Avenir Santé").Activate
ActiveSheet.ChartObjects("Novaxia Neo").Activate
End Sub