Importer une image dans un userform
Bonjour,
N'étant pas experte en VBA, je me suis inspirée de codes existants trouvés dans des forums pour écrire le code suivant.
Description du fichier :
L'utilisateur entre des données dans un userform. Celui-ci envoi les données dans un onglet "Données 2". A partir de cette base de donnée, 4 tableaux croisés dynamiques sont générés. Sur ces 4 tableaux, trois sont transformés en graphiques. Ces graphiques doivent ensuite apparaître dans le userform. Pour celà, un emplacement est réservé pour chacun d'autre eux : Image1 à Image3.
Démarche :
Après avoir cherché sur Internet, j'ai trouvé le code ci-dessous que j'ai un peu modifié. Celui-ci a très bien fonctionné quelques temps et maintenant il me donne le code erreur 481 "Image incorrect". Pourquoi???
Code:
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
| Option Explicit
Const Fichier As String = "C:\ImageTemp.gif"
_________________________________________________________________
Private Sub UserForm_Initialize()
'Gestion des images de graphiques
Dim graph As Integer
For graph = 2 To 4
'Supprime l'image temporaire si elle existe
If Dir(Fichier) <> "" Then Kill Fichier
'Définit le graphique dans l'onglet "RowSource" et exporte le graphique au format image
With Worksheets("RowSource").ChartObjects(graph)
.Height = 138 'assure la bonne hauteur
.Width = 210 'assure la bonne largeur
.Chart.Export Filename:=Fichier, filtername:="GIF" 'exporte le graphique
End With
'Affiche l'image dans le UserForm
If graph = 2 Then
Me.Image1.Picture = LoadPicture(Fichier)
ElseIf graph = 3 Then
Me.Image2.Picture = LoadPicture(Fichier)
ElseIf graph = 4 Then
Me.Image3.Picture = LoadPicture(Fichier)
End If
Next graph
End Sub |
Réponse et nouveaux éléments
Bonjour,
Tout d'abord, merci BEN pour ta réponse. J'ai essayé de suivre l'aide pour la résolution mais j'ai vite été larguée... Je suis tout de même partie de ce que j'avais compris du problème et je ne pense pas que l'espace disque soit le problème.
Premièrement parce que mon image ne prend que 12 Ko sur le disque, et deuxièmement parce que qu'il me reste 39.9 Go d'espace libre sur le disque C: donc ça me paraît bon de ce côté là. Bien sûr, il reste la possibilité que je soit à côté de la plaque :mouarf:
Ensuite, j'ai fais quelques tests supplémentaires et ce sont les lignes suivantes qui bloquent :
Code:
1 2 3 4 5 6 7 8
| 'Affiche l'image dans l'UserForm
If graph = 1 Then
UF_Retouches.Image1.Picture = LoadPicture(Fichier)
ElseIf graph = 2 Then
UF_Retouches.Image2.Picture = LoadPicture(Fichier)
ElseIf graph = 3 Then
UF_Retouches.Image3.Picture = LoadPicture(Fichier)
End If |
Pour Excel, il y a un problème sur "UF_Retouches.Image1.Picture" car il me met "=Nothing" dans le Débogage. Cette image existe et j'ai vérifié les noms, rien de ce côté là. Le code exporte bien mes graphiques en images est je peux les retrouver donc rien non plus de ce côté ci.
Fait intéressant, le code fonctionne par intermittence. Je m'explique. A la première utilisation il ne fonctionne pas. Mais si je change le code par autre chose (n'importe quoi), je l’exécute, au débogage suivant je réécrit le code initial, je l'exécute.... Il fonctionne!!!!
Quelqu'un comprend? :calim2: