XL 2010 Help ! Utilisation Objet ImageList dans Formulaire

sweader

XLDnaute Nouveau
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 peut utiliser à 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
 
Dernière édition:

sweader

XLDnaute Nouveau
Bonjour Philippe,

Merci de ta réponse et du temps consacré à mon problème.
J'a regardé très attentivement ton fichier joint et te félicite pour la qualité de réalisation.
Toutefois et malheureusement, cela ne correspond pas à ma problématique ... et qui plus est, ne me parait pas adapté à mon besoin initial ..... Cela étant bien dommage pour moi...

En infos complémentaire à la définition de mon probléme, la "mémorisation" des images dans l'objet ImageList ... ne fonctionne pas..., toutefois 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 dans 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 à la communauté pour les éventuels éclaircissements et/ou idées sur ce dysfonctionnement ....
Et encore merci à Philippe.
Cordialement.

Pascal
 

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Chez moi cela marche sans passer par LOAD
Exemple avec un userform avec un controle image et un controle ImageList qui contient 4 images
VB:
Private Sub UserForm_Click()
Image1.Picture = ImageList1.ListImages(3).Picture
End Sub

Private Sub UserForm_Initialize()
Image1.Picture = ImageList1.ListImages(2).Picture
End Sub
 
Dernière édition:

Si...

XLDnaute Barbatruc
Bonjour

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 ???
Sans fichier pour voir où cela peut clocher …

Tu as une partie de la réponse avec le fichier joint (j'ai remanié une proposition déjà faite)
 

Pièces jointes

  • ImageList(Photo).xlsm
    258.3 KB · Affichages: 92

sweader

XLDnaute Nouveau
Hello !!

Merci à vous, SI et YURPERQOD,

Je n'ai pas encore "regardé" vos réponses, étant en train de préparer une extraction du code et Formulaire de mon application "globale". Etant le premier à "maugréer" quand il n'y a pas de fichier support sur les forums :), j'ai donc 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 exemple.

Donc en PJ, le fichier exemple.

Quelques explications et contexte:
  1. Accès au formulaire par le bouton principal sur l'unique Onglet du Fichier.
  2. Toutes les fonctions sont accessibles et fonctionnent (normalement) avec les boutons / icones.
  3. Pour certains, il faudra potentiellement ajouter le fichier Références VBProject depuis l'editeur VBE nécessaire au fonctionnement des Objets ImagesList.
  4. 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 !!!!o_O)

A vous lire, les amis !!!! :)

PS : Je regarde vos réponses précédentes et vous tiens au courant ....

Cordialement.

Pascal
 

Pièces jointes

  • SWD- Extract TM Vers.(a) du 300817.xlsm
    1 012.7 KB · Affichages: 92
Dernière édition:

sweader

XLDnaute Nouveau
Re ...YURPER ....
mon fichier de base est issu d'EXCEL Version 2010.

Alors, après chargement du fichier exemple "ImageList (Photos)", tout comme toi YURPER, l'objet Contrôle ImageList1 est TOTALEMENT Invisible et Inaccessible !!!!! ????
Plus étrange encore, lors d'une insertion d'un nouveau objet ImageList ... ce dernier apparait bien, avec un nom incrémenté à 2, ce qui signifie que le VBE voit bien et utilise le ImageList 1 ......

Voilà ou j'en suis, je recule !!!!!! lol .....

@ Bientôt !!!

Pascal
 
Dernière édition:

Yurperqod

XLDnaute Occasionnel
A l'ouverture de ton classeur ou de celui de Si... j'ai ce message d'erreur.
erreurF.jpg

Pourtant, sur un classeur vierge, je peux insérer un contrôle ImageList
(voir mon premier message)
Mais quand j'ai fais mon test, je n'ai pas enregistré et fermé le fichier, j'ai testé directement dans Visual Basic Editor
 

Yurperqod

XLDnaute Occasionnel
Je viens de faire le test
J'ai enregistré puis fermé mon classeur de test
Et quand je le rouvre, j'ai toujours mon contrôle ImageList et les images qui y sont stockées.
C'est comme si, le contrôle ImageList fonctionne uniquement sur les classeurs que je créé sur mon PC.

Mais cela ne fonctionne pas avec les classeurs qui viennent d'autres PC.
 

sweader

XLDnaute Nouveau
Je viens de faire le test
J'ai enregistré puis fermé mon classeur de test
Et quand je le rouvre, j'ai toujours mon contrôle ImageList et les images qui y sont stockées.
C'est comme si, le contrôle ImageList fonctionne uniquement sur les classeurs que je créé sur mon PC.

Mais cela ne fonctionne pas avec les classeurs qui viennent d'autres PC.

re ...
Je lance un sujet sur la table, moi la version du fichier Référence vBProject est :
- Nom: MSCOMCTL.OCX ----- ImageList Control Vers. 6.0
- Dans les propriétés du fichier, répertoire WINDOWS\SYSWOW\ etc .....
Date du fichier : 09.12.15 - 1046 Ko - Version 6.1.98.46 ....

Une différence ???

Merci
 

Si...

XLDnaute Barbatruc
Re (le temps de faire la photo et de répondre dans un autre fil ...et vous avez cernés le problème)

Comme avec les contrôles du même OCX (DTPicker, MonthView, ImageList…) on se retrouve avec pleins de problèmes dûs surtout aux différentes versions du MSCOMCTL.OCX distribuées avec les différentes versions de OFFICE et EXCEL.
upload_2017-8-30_15-38-56.png


Voir toutes les discussions sur le "DTPicker"
 

Statistiques des forums

Discussions
290 902
Messages
1 911 283
Membres
177 117
dernier inscrit
Bicycle74
Haut Bas