Image dans formulaire

Bonjour le forum,

J'espère avoir un peu d'aide de vous les spécialistes de VBA.

Sur mon Formulaire de base de donnée (enregistrement, modifier, supprimer) j'ai mis un objet Image1 qui à l'ouverture affiche une image par défaut (nommée Defaut) dans un dossier ou son stocké les image en jpg

J'ai fais ce code :

Private Sub UserForm_Initialize()
Me.Image1.Picture = LoadPicture("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\Defaut.JPG")
End Sub

ensuite sur une Listbox ou je récupère la liste de ma BDD, au click je souhaites récupérer l'image correspondante (si elle existe)

par ex :

Si textbox1 est diffèrent du fichier des images alors

image par défaut

si non

image correspondante à textbox1

j'ai fais ce code :

Sub AfficheImage()
 Dim chemin As String
 Dim fichier As String

  chemin = Txt_CodeArt.Value
  fichier = ("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\.JPG")

     If fichier <> chemin Then
       On Error GoTo absent
      Me.Image1.Picture = LoadPicture("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\" & chemin & ".JPG")
    Else
     Me.Image1.Picture = LoadPicture("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\Defaut.JPG")
      absent:    MsgBox "la photo demandé n'est pas disponible"
    End If
End Sub

je ne met pas de fichier en PJ pour le moment à cause du fichier des images.

pouvez vous me dire si ces codes sont bon car c'est la 1ère fois que je travail les images ?

Merci par avance

Cordialement

Bonjour,

Tu as essayé ?

A+

Bonjour Galopin01

Bien sur !! mais n'étant pas sur de moi sur ce sujet c'est pour ça que je demande conseil.

entre temps j'ai essayé d'améliorer macro AfficheImage avec message d'erreur.

Sub AfficheImage()
Dim chemin As String
Dim fichier As String

''on definie une variable en taille, le dim au dessus, et sa valeur, la ligne en dessous
chemin = Txt_CodeArt.Value 'donc chemin = nom d'image
fichier = ("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\.JPG")

On Error GoTo absent:  ' Prise en compte des gestions d'erreur
If fichier <> chemin Then  ' Si Fichier image est différent de Txt_CodeArt alors
'pour afficher l'image, nous avons la ligne suivante et ou nous retrouvons le repertoire par defaut des images et notre variable
Me.Image1.Picture = LoadPicture("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\" & chemin & ".JPG")
End If
On Error GoTo 0  'On désactive les gestions des erreurs
Exit Sub
'une petite gestion d'erreur au cas ou l'image n'est pas trouvé
absent:  MsgBox "la photo demandé n'est pas disponible"
InitImage  'Affiche image par défaut
End Sub

Sub InitImage()
 Me.Image1.Picture = LoadPicture("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\Defaut.JPG")
End Sub

Sinon, ça à l'air de fonctionner. C'est juste pour être sur!

Dans cette situation si tu ne fournis pas de fichier, c'est sur qu'on ne va pas tester grand chose :

Ya rien qui ressemble plus à un

Me.Image1.Picture = LoadPicture

qu'un autre

Me.Image1.Picture = LoadPicture

La seule chose qui les différencie ce sont des string de chemin et de nom de fichier,

Alors si tes essais sont concluants jusqu'à nouvel ordre... tu tiens le bon bout !

A+

Je sens en toi une mise en garde, non ?

serait-il le If fichier <> chemin ,qui pourrai poser problème ?

Bon je joins le classeur sans le dossier image

29essai.xlsm (36.85 Ko)

Je sens en toi une mise en garde, non ?

Non, non !

Quand le travail a été fait avec soin YAPA d'raison.

C'est juste que c'est nécessairement la seule chose qu'on ne peut jamais tester sur le forum et ces longues chaines de caractères sont taquines : Quand les fichiers liés ne sont pas dans le même répertoire que le fichier maître, ou dans un sous-répertoire enfant, il y a toujours un peu de risque. Un espace (invisible) en plus ou en moins, le moindre problème inattendu dans le copier/coller du path et c'est le drame...

Moi je suis un adepte du ThisWorkbook.Path. Maintenant... on ne peux pas toujours faire avec !

En fait c'est ce :

fichier = ("C:\Users\FRANCE\Desktop\Documents à présenter\Divers fichiers\Habillement\img\.JPG")
'...
If fichier <> chemin Then

qui me laisse sceptique... Je ne vois pas bien dans ces conditions par quel miracle le string pourrait être identique ! Il faudrait vraiment le faire exprès ? Mébon... Je dois être un peu fatigué !

A+

Bonjour

Merci pour le travail qui a été fait avec soin (c'est rassurant pour moi)

C'est un défi pour moi, car j'essai d'effectuer un catalogue de vêtement pour y effectuer des commandes par la suite, c'est pour mon travail.

J'ai essayé de suivre tes conseils pour ThisWorkbook.Path, j'ai refais des codes (ça parai plus simple, propre et claire) et ça à l'air de fonctionner.

Image par défaut

Sub InitImage()
  Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\img\Defaut.jpg")
End Sub

sinon recherche image correspondante

Sub AfficheImage()
If Dir(ThisWorkbook.Path & "\img" & "\" & Txt_CodeArt & ".jpg") = "" Then
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\img\Defaut.jpg")
Else
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\img" & "\" & Txt_CodeArt & ".jpg")
End If
End Sub

j'espère avoir bien fait et être sur la bonne voie.

Je ne sais pas à quoi sert la Sub InitImage, je n'ai pas cherchéé mais je suppose qu'elle sert quelque part ailleurs ?

Si oui, dans ce cas tu peux la réutiliser ici :

Sub AfficheImage()
If Dir(ThisWorkbook.Path & "\img" & "\" & Txt_CodeArt & ".jpg") = "" Then
InitImage
Else
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\img" & "\" & Txt_CodeArt & ".jpg")
End If
End Sub

elle sert pour l'ouverture du UF et également ailleur, oui j'aurai pu la mettre dans AfficheImage

c'étais pour m'obliger à créer le code détaillé.

je peux mettre résolu, @ bientôt certainement pour d'autres demandes.

Merci pour tout

Cdlt

Encore un petit brin de simplification :

Sub AfficheImage()
If Dir(ThisWorkbook.Path & "\img\" & Txt_CodeArt & ".jpg") = "" Then
InitImage
Else
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\img\" & Txt_CodeArt & ".jpg")
End If
End Sub

C'est noté et modifié dans mon UF

Merci

@ bientôt

Rechercher des sujets similaires à "image formulaire"