Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage photo

5 réponses
Avatar
Lionel
Bonjour !

Ces deux procedures "couplées" affichent une photo dans mon userform a
partir de son nom stocke dans une cellule.. Jusque là rien de bin difficile
ni d'anormal... sauf que si le nom dans la cellule ne correspond pas (faute
d'orthographe ou modification du nom de la photo) ca plante !

Y a t il moyen de mettre un test d'erreur et par exemple de considerer que
la cellule est vide si le nom ne correspond pas...

Merci pour votre aide...

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop
....
ChoixPhotoDos = ActiveCell.Offset(0, 10).Value
...
Load UserForm1
End Sub


Private Sub ChoixPhoto_Change()
Image1.Picture = LoadPicture(ChoixPhoto)
End Sub

5 réponses

Avatar
MichDenis
en supposant que "ChoixPhoto" représente le nom de la photo
de la cellule que tu veux ajouter au classeur, tu vérifiies si
ce nom existe bien dans le répertoire de tes photos

Dim Rep as String
Rep = "c:Mes Photos"

if dir(rep & ChoixPhoto & .jpg) <>"" then
Image1.Picture = LoadPicture(ChoixPhoto)
else
Msgbox "Cette photo est introuvable dans le répertoire : " rep
End if








"Lionel" a écrit dans le message de news:
46081e33$0$5111$
Bonjour !

Ces deux procedures "couplées" affichent une photo dans mon userform a
partir de son nom stocke dans une cellule.. Jusque là rien de bin difficile
ni d'anormal... sauf que si le nom dans la cellule ne correspond pas (faute
d'orthographe ou modification du nom de la photo) ca plante !

Y a t il moyen de mettre un test d'erreur et par exemple de considerer que
la cellule est vide si le nom ne correspond pas...

Merci pour votre aide...

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop
....
ChoixPhotoDos = ActiveCell.Offset(0, 10).Value
...
Load UserForm1
End Sub


Private Sub ChoixPhoto_Change()
Image1.Picture = LoadPicture(ChoixPhoto)
End Sub
Avatar
Lionel
Bonjour,
Je dois etre bete mais meme si je vois ou tu veux en venir ca ne fonctionne
pas
a la creation d'un ligne pas de photo puisque pas encore selectionnée donc
pas de soucis mais si je veux modifier une ligne et que le rappel d'une
photo se fait par cargement du nom qui se trouve dans une cellule et que ce
nom pour x raisons ait été changé et non conforme au nom d'une image
"valide" la ca plante. il faudrait effectivement vérifier que mon image dont
le nom est chargé a partir d'une cellule en offset(0,10) par rapport a la
cellule active de reference existe bien dans le fichier ou dans les additem
crées...
revoici les parties des procedures...

J'ai dans l'initialisation de mon form
1 - une recherche des photos presentes dans mon fichier
2 - un chargement des differents textbox et images du form en allant
chercher en cellule de la ligne active les infors necessaires au chargement
de l'userform
3 affichage userform

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop

[...]
TextBox3 = ActiveCell.Offset(0, 2).Value
ComboBox1 = ActiveCell.Offset(0, 3).Value
ComboBox2 = ActiveCell.Offset(0, 4).Value
TextBox4 = ActiveCell.Offset(0, 5).Value
ChoixPhoto = ActiveCell.Offset(0, 9).Value
[...]
ChoixPhoto.List = ListSort(ChoixPhoto.List)
Load UserForm1


Merci de l'aide qui pourra m'etre apportée...
Lionel
Avatar
MichDenis
Ce que je t'ai suggéré permet de vérifier si le chemin + la photo(son nom)
existe réellement, si c'est vrai pas de problème sinon un message à cet égard


Dim Rep as String, ChoixPhoto as String
Rep = "c:Mes Photos" ' Le répertoire où sont les photos

'Tu adaptes selon la cellule où est le nom de la photo.
'si le nom de la photo dans la cellule ne contient pas l'extention
'du fichier, tu l'ajoutes en ajoutant à la ligne suivante : & ".jpg"
ChoixPhoto = Worksheets("Feuil1").range("A1")

'Vérifie si le fichier existe réellement dans le répertoire donné
if dir(rep & ChoixPhoto & .jpg) <>"" then
'Si oui, chargement de la photo
Image1.Picture = LoadPicture(ChoixPhoto)
else
'Sinon, avis donné à l'usager
Msgbox "Cette photo est introuvable dans le répertoire : " rep
End if

Selon ce que tu désires faire dans ton application, tu devras adapter
la proposition faite.




"Lionel" a écrit dans le message de news:
460a80d6$0$27368$
Bonjour,
Je dois etre bete mais meme si je vois ou tu veux en venir ca ne fonctionne
pas
a la creation d'un ligne pas de photo puisque pas encore selectionnée donc
pas de soucis mais si je veux modifier une ligne et que le rappel d'une
photo se fait par cargement du nom qui se trouve dans une cellule et que ce
nom pour x raisons ait été changé et non conforme au nom d'une image
"valide" la ca plante. il faudrait effectivement vérifier que mon image dont
le nom est chargé a partir d'une cellule en offset(0,10) par rapport a la
cellule active de reference existe bien dans le fichier ou dans les additem
crées...
revoici les parties des procedures...

J'ai dans l'initialisation de mon form
1 - une recherche des photos presentes dans mon fichier
2 - un chargement des differents textbox et images du form en allant
chercher en cellule de la ligne active les infors necessaires au chargement
de l'userform
3 affichage userform

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop

[...]
TextBox3 = ActiveCell.Offset(0, 2).Value
ComboBox1 = ActiveCell.Offset(0, 3).Value
ComboBox2 = ActiveCell.Offset(0, 4).Value
TextBox4 = ActiveCell.Offset(0, 5).Value
ChoixPhoto = ActiveCell.Offset(0, 9).Value
[...]
ChoixPhoto.List = ListSort(ChoixPhoto.List)
Load UserForm1


Merci de l'aide qui pourra m'etre apportée...
Lionel
Avatar
Lionel
Ce fichier pouvant etre utilisé par differentes personnes je ne sais ou il
vont mettre ledit fichier sur leur ordi ...il faudrait une formulation qui
permette de recuperer ce "path" sans le connaitre d'avance...
Merci

"MichDenis" a écrit dans le message de news:
#
Ce que je t'ai suggéré permet de vérifier si le chemin + la photo(son nom)
existe réellement, si c'est vrai pas de problème sinon un message à cet
égard



Dim Rep as String, ChoixPhoto as String
Rep = "c:Mes Photos" ' Le répertoire où sont les photos

'Tu adaptes selon la cellule où est le nom de la photo.
'si le nom de la photo dans la cellule ne contient pas l'extention
'du fichier, tu l'ajoutes en ajoutant à la ligne suivante : & ".jpg"
ChoixPhoto = Worksheets("Feuil1").range("A1")

'Vérifie si le fichier existe réellement dans le répertoire donné
if dir(rep & ChoixPhoto & .jpg) <>"" then
'Si oui, chargement de la photo
Image1.Picture = LoadPicture(ChoixPhoto)
else
'Sinon, avis donné à l'usager
Msgbox "Cette photo est introuvable dans le répertoire : " rep
End if

Selon ce que tu désires faire dans ton application, tu devras adapter
la proposition faite.




"Lionel" a écrit dans le message de news:
460a80d6$0$27368$
Bonjour,
Je dois etre bete mais meme si je vois ou tu veux en venir ca ne
fonctionne

pas
a la creation d'un ligne pas de photo puisque pas encore selectionnée donc
pas de soucis mais si je veux modifier une ligne et que le rappel d'une
photo se fait par cargement du nom qui se trouve dans une cellule et que
ce

nom pour x raisons ait été changé et non conforme au nom d'une image
"valide" la ca plante. il faudrait effectivement vérifier que mon image
dont

le nom est chargé a partir d'une cellule en offset(0,10) par rapport a la
cellule active de reference existe bien dans le fichier ou dans les
additem

crées...
revoici les parties des procedures...

J'ai dans l'initialisation de mon form
1 - une recherche des photos presentes dans mon fichier
2 - un chargement des differents textbox et images du form en allant
chercher en cellule de la ligne active les infors necessaires au
chargement

de l'userform
3 affichage userform

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop

[...]
TextBox3 = ActiveCell.Offset(0, 2).Value
ComboBox1 = ActiveCell.Offset(0, 3).Value
ComboBox2 = ActiveCell.Offset(0, 4).Value
TextBox4 = ActiveCell.Offset(0, 5).Value
ChoixPhoto = ActiveCell.Offset(0, 9).Value
[...]
ChoixPhoto.List = ListSort(ChoixPhoto.List)
Load UserForm1


Merci de l'aide qui pourra m'etre apportée...
Lionel





Avatar
MichDenis
Habituellement, l'usager créé un répertoire et il place tout ce qui concerne
l'application dans ce répertoire... et il s'agit d'utiliser ThisWorkbook.Path
pour trouver le chemin où sont les photos... si tes usagers peuvent placer
les photos à l'endroit de leur choix... il faudra qu'à chaque fois, tu lances
une opérations de recherche du fichier sur l'ensemble du disque dur et
là, le temps requis est excessif.




"Lionel" a écrit dans le message de news:
460aaa9d$0$5099$
Ce fichier pouvant etre utilisé par differentes personnes je ne sais ou il
vont mettre ledit fichier sur leur ordi ...il faudrait une formulation qui
permette de recuperer ce "path" sans le connaitre d'avance...
Merci

"MichDenis" a écrit dans le message de news:
#
Ce que je t'ai suggéré permet de vérifier si le chemin + la photo(son nom)
existe réellement, si c'est vrai pas de problème sinon un message à cet
égard



Dim Rep as String, ChoixPhoto as String
Rep = "c:Mes Photos" ' Le répertoire où sont les photos

'Tu adaptes selon la cellule où est le nom de la photo.
'si le nom de la photo dans la cellule ne contient pas l'extention
'du fichier, tu l'ajoutes en ajoutant à la ligne suivante : & ".jpg"
ChoixPhoto = Worksheets("Feuil1").range("A1")

'Vérifie si le fichier existe réellement dans le répertoire donné
if dir(rep & ChoixPhoto & .jpg) <>"" then
'Si oui, chargement de la photo
Image1.Picture = LoadPicture(ChoixPhoto)
else
'Sinon, avis donné à l'usager
Msgbox "Cette photo est introuvable dans le répertoire : " rep
End if

Selon ce que tu désires faire dans ton application, tu devras adapter
la proposition faite.




"Lionel" a écrit dans le message de news:
460a80d6$0$27368$
Bonjour,
Je dois etre bete mais meme si je vois ou tu veux en venir ca ne
fonctionne

pas
a la creation d'un ligne pas de photo puisque pas encore selectionnée donc
pas de soucis mais si je veux modifier une ligne et que le rappel d'une
photo se fait par cargement du nom qui se trouve dans une cellule et que
ce

nom pour x raisons ait été changé et non conforme au nom d'une image
"valide" la ca plante. il faudrait effectivement vérifier que mon image
dont

le nom est chargé a partir d'une cellule en offset(0,10) par rapport a la
cellule active de reference existe bien dans le fichier ou dans les
additem

crées...
revoici les parties des procedures...

J'ai dans l'initialisation de mon form
1 - une recherche des photos presentes dans mon fichier
2 - un chargement des differents textbox et images du form en allant
chercher en cellule de la ligne active les infors necessaires au
chargement

de l'userform
3 affichage userform

Private Sub UserForm_Initialize()
unité = Left(ActiveWorkbook.Path, 3)
ChDrive unité
ChDir ActiveWorkbook.Path
nf = Dir("*.jpg")
Do While nf <> ""
Me.ChoixPhoto.AddItem nf
nf = Dir
Loop

[...]
TextBox3 = ActiveCell.Offset(0, 2).Value
ComboBox1 = ActiveCell.Offset(0, 3).Value
ComboBox2 = ActiveCell.Offset(0, 4).Value
TextBox4 = ActiveCell.Offset(0, 5).Value
ChoixPhoto = ActiveCell.Offset(0, 9).Value
[...]
ChoixPhoto.List = ListSort(ChoixPhoto.List)
Load UserForm1


Merci de l'aide qui pourra m'etre apportée...
Lionel