J'utilise ce code pour charger des images en fonction d'une Combobox.
Private Sub ComboBox1_Change()
If ComboBox1 = "Aide" Then
Image1.Picture = LoadPicture("S:\JTARDY\Excel\icone_aide_fr[1].gif")
End If
If ComboBox1 = "Stats" Then
Image1.Picture = LoadPicture("S:\JTARDY\Excel\icone_stats[1].gif")
End If
End Sub
Comment puis-je faire pour que l'image soit toujours prise dans le dossier "Images" situé au même niveau que le fichier lui même.
C'est à dire que mon fichier soit dans \...\Fichier.xls et mes images dans \...\Images\...
L'idée est que si je change mes fichiers de place je n'ai pas le soucis des liens !
Pour connaitre le chemin de ton fichier (xls) tu peux utiliser thisworkbook.path & "\images\" & "icone_stats[1].gif", en admettant que Images est un sous répertoire.
Images sera toujours un sous-répertoire du chemien du fichier effectivemment ;-)
Mais quelle est la ligne à mettre avec ce à la place de
Image1.Picture = LoadPicture("S:\DEPARTEMENT SDL\Qfabrication\JTARDY\Excel\icone_stats[1].gif")
pq je n'y parviens pas !
Si images est un sous répertoire de Excel on aura comme chemin
"S:\DEPARTEMENT SDL\Qfabrication\JTARDY\Excel\NomdufichierXL.xls"
et
"S:\DEPARTEMENT SDL\Qfabrication\JTARDY\Excel\images\nomdufichierimage.gif"
donc cela devient comme je disais
Private Sub ComboBox1_Change()
dim NomF$
select case ComboBox1.value
case "Aide":nomf="icone_aide_fr[1].gif"
case "Stats": nomf="icone_stats[1].gif"
end select
nomf=thisworkbook.path & "\images\" & nomf
if fichierexiste(nomf)then
with Image1
.picturesizemode=1 'mode étendue pour adapter la taille de l'image
.Picture = LoadPicture(nomf)
end with
end if
End Sub
Function FichierExiste(NomF$) As Boolean
On Error Resume Next
FichierExiste = ((GetAttr(NomF) And vbDirectory) = 0)
End Function