Utilisation Objet ImageList
Bonjour,
Par avance, merci aux âmes charitables qui pourront m'aider à comprendre, voir solutionner mon problème avec les Objets de type ImageList utilisé dans les Formulaires en VBA sur EXCEL ....
Je vais essayer de faire court.
Comme nombre d'entre vous, j'ai eu recours à l'utilisation d'Objet type ImageList, pour gérer des fichiers image dans mes applications EXCEL personnalisé.
Je rencontre le problème suivant.
Sur un formulaire X, au travers d'un bouton Y qui affiche un FileSelect, je charge des images dans un ImageList, via l'instruction des plus communément utilisé :
- Me.ImageList1.ListImages.Add , "Cle2", LoadPicture("C:\Tartenpion.JPG")
"Tartenpion.jpg", étant naturellement issu du FileSelect.
Dés le chargement de l'image, je visualise l'import dans un Objet de type Image, avec la propriété "Picture", Image qui s'affiche correctement ...... jusque là pas de problème,
la manipulation des Images importées se fait correctement et sans anicroches....
En complément et par "sécurité", un bouton "Sauvegarde", qui enregistre le fichier dans sa totalité.... Toujours aucun problème....
J'effectue une sauvegarde, pensant que cette action permet/valide l'enregistrement des images importées dans l'objet ImageList, ce qui me permettra ultérieurement, après fermeture puis réouverture du fichier EXCEL, de pouvoir "récupérer" les images importées, les manipuler, ...... Bref, que les images du ImageList font maintenant partie intégrante du fichier EXCEL .......
Et bien non, malgré l'emploi de l'instruction "LoadPicture ....", de sauvegardes du fichier avec l'objet ImageList "chargé" d'images ...... PLUS RIEN !!!!
Au réemploi du fichier, l'ImageList est vide !!!!!! je ne peux donc rien faire .....
Pour celles et ceux qui souhaiterait m'éclairer, pouvez-vous me confirmer que j'emploi correctement cet objet ??? ou si je me trompe sur son usage, en pensant, qu'une fois l'ImageList "chargé" et sauvegardé, on peu utilisé à sa bonne guise et comme souhaité, les images intégrées .... comme on veut ???
En clair, en fais-je bon usage ???
Ou alors faut-il, une fois l'ImageList "chargé" d'images, manipuler ces images en les intégrant une à une dans des "Picture", enregistrer et se servir ensuite de ces pictures, en rechargaeant l'ImageList depuis ces Pictures ?????
Alors, j'espère avoir été clair dans mes explications ...... et je remercie, les sachants qui pourront éclairer ma lanterne !!!!
Par avance, merci à vous !!!
Cordialement.
Pascal
Bonjour,
Avant toute chose, il faudrait savoir si tu initialises ta userform correctement ...
Hello !!!
Merci de ton intérêt à mon problème ...
Que dire sur l'initialisation, rien de spécial .... puisque tout fonctionne sauf la "mémorisation" des images dans l'objet ImageList ...
A la teneur de tes propos, tu sous entendrai qu'il y aurait une manipulation spécifique" pour l' ImageList ????
En complément, depuis l'éditeur VBA, et usage de la propriété "Personnalisé" de l'ImageList, via le bouton "Insérer" une image et une sauvegarde, l'image reste correctement stockée das l'Objet ImageList ..... en clair :
- Depuis les propriétés --> Personnalisé --> Insérer ===> Cela fonctionne.
- Depuis l'instruction "LOAD" en VBA, ne fonctionne pas, j'entends les images ne restent pas stockées ...
Merci à toi pour les éclaircissements et/ou idées sur ce dysfonctionnement ....
Cordialement.
Pascal
Bonjour à tous !
tout fonctionne sauf la "mémorisation" des images
Autre façon de dire que cela ne fonctionne pas comme prévu !
Il me semble que le problème se situe au niveau du chargement des images lors de l'initialisation... ce que James tente patiemment de suggérer, me semble-t-il aussi... il serait peut-être judicieux de t'y pencher...
Cordialement.
Hello !!
Merci à vous pour le temps consacré à mon problème,
J'ai extrait la partie problématique de mon appli, en adaptant un minimum le code pour que la communauté puisse œuvrer sur le sujet et fichier en exemple.
Donc en PJ, le fichier exemple.
Quelques explications et contexte:
* Accès au formulaire par le bouton principal sur l'unique Onglet du Fichier.
* Toutes les fonctions sont accessibles et fonctionnent (normalement) avec les boutons / icones.
* Pour certains, il faudra potentiellement ajouter le fichier Références VBProject depuis l'editeur VBE nécessaire au fonctionnement des Objets ImagesList.
* Ne Fonctionne pas, car non encore codé : la visualisation d'une 2ème image chargée.
Mon problème, depuis le lancement par le Bouton "AFFICHE USERFORM" sur la feuille EXCEL, lancement de la procédure d'ajout d'une image par le bouton "AJOUTER une IMAGE" situé sur le Formulaire, selectionner une image, elle s'affiche ..... pas de probleme.
On sort du formulaire (avec sauvegarde ou pas), on retourne dans l'editeur VBE, sur le formulaire en mode edition et là, je m'attends (ou alors je me trompe ??), en cliquant sur l'objet ImageList1 (en haut à gauche), puis "propriétés", valeur "Personnalisé", Onglet Images ...... à trouver l'image importée, de façon a pouvoir "travailler" avec dans l'application et par codage VBA .....
QUE NENNI !!!!!
Voilà vous en savez autant que moi .....
Merci pour le temps consacré à mon problème (qui je pense ne doit pas en être un, je pense plutôt que je le génère, par mauvaise manipulation ou usage !!!!)
A vous lire, les amis !!!!
Cordialement.
Pascal
Lors de la conception, tu définis les propriétés par défaut des contrôles d'un Userform, et chaque fois que tu chargeras ton formulaire il s'ouvrira avec les contrôles à leurs propriétés définies par défaut, toujours les mêmes !
Tu peux modifier des propriétés avant ouverture, c'est le rôle de la procédure Initialize qui s'exécute au chargement (ou également intervenir de l'extérieur en utilisant la procédure appelante). Tu peux réajuster des propriétés avant chaque affichage (après que le Userform ait été masqué,sans être déchargé), c'est le rôle de la procédure Activate.
Mais en tout état de cause, les modification de propriétés lors de l'exécution ne demeurent que tant que le Userform n'a pas été déchargé. Le fermer puis le recharger fait revenir aux propriétés par défaut.
Il me semble que tu négliges cet aspect fondamental.