Comment charger image.picture avec une valeur??

Signaler
Messages postés
62
Date d'inscription
jeudi 26 mai 2005
Statut
Membre
Dernière intervention
30 mai 2017
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'ai une petite question a propos de image.picture = loadpicture ("tartampion.GIF")

Bon déjà j'ai galéré pour comprendre que VBA ne prenait pas en compte mes images .png.... ;0(

Mais sinon, quand on écrit image.picture = loadpicture ("tartampion.GIF"), il renvoie une valeur pour image.picture.

Comment se fait-il que cette valeur soit différente a chaque fois (même si l'image chargée est toujours la même)?

Et donc j'imagine qu'il n'est pas possible de faire image.picture = 563214562.

C'est juste que je fais un petit programme qui sera utilisé par des collègues. J'ai une base de donnée de centaines d'images sur mon ordi, que mes collègues n'ont pas. Je souhaiterais donc rentrer en dur ces images dans mon code VBA. Je pourrais les coller dans un userform me direz vous, mais ça vas me prendre un temps fou.
Je pensais dans une macro temporaire, récupérer cette valeur pour chaque image, et dans mon programme lui dire tartampion.picture =
421242. Mais je ne penses pas que ça marche comme cela...

Merci d'avance pour vos réponses.

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
1) la valeur attribuée par VB n'est qu'un pointeur interne vers un bitmap conservé en mémoire, au moment de l'insertion d'une image. Elle n'est en aucun cas un "condensé" du bitmap inséré ... Juste un pointeur (une adresse) vers un tableau de dibits gardé en mémoire (à cette adresse).
Il y a autant de ces tableaux qu'il y a d'images ainsi insérées, qu'elles soient ou non identiques.
Tu comprendras mieux avec une analogie avec les variables :
Tu peux avoir deux variables (toto et titi, par exemple) qui ont la même valeur (disons 10, par exemple). Il n'en reste pas moins que tu auras bien DEUX variables pour UNE MEME valeur
2) Sauf à distribuer avec ton classeur :
- soit un dossier contenant tous les fichiers images à utiliser (conseillé)
- soit une base de données contenant ces images et non leur chemin (déconseillé)
tu n'as pour faire ce que tu veux faire pas d'autre choix que celui :
- d'insérer réellement toutes ces images dans ton classeur (en leur attribuant un nom)
- de les utiliser ensuite en te référant à ces images par leur nom

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
30310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2020
338
Bonjour,

Tu peux utiliser LoadPicture pour initialiser des varibles correspondant à ton image
exemple
Set img1 = LoadPicture("Collines.jpg")
Image1.Picture = img1

Messages postés
62
Date d'inscription
jeudi 26 mai 2005
Statut
Membre
Dernière intervention
30 mai 2017
1
Bonjour ucfoutu, pas forcément la réponse que j'attendais, car ça va me demander un peu plus de travail pour insérer toutes ces images, et alourdir mon programme. Mais si je n'ai pas le choix ;O(

Merci Jordane45; mais le problème que j'ai déjà expliqué, c'est que mes collègues ne pourrons pas utiliser le programme car il n'aurons pas accès a ma base de données d'images.

Merci a tous de votre aide.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Et alors ?
et alourdir mon programme
Que crois-tu donc qu'il se passe, lorsque tu affectes une image à une variable ? ===>> un tabeau de données est gardé en mémoire dans ton appli !
Si tu ne veux pas alourdir ton appli, c'est la solution de conservation des images à l'extérieur de ton appli qui, seule, est alors valable !