Bonjour à tous, après plusieurs mois d'admiration sur la qualité et l’exhaustivité du site je décide de me lancer...

Dans une application Access que je développe je rencontre le problème suivant. J'ai un formulaire utilisant un Treeview qui s'appui pour les icônes sur un contrôle CtrlImageListe selon une démarche très largement décrite dans les forum du site (merci à tous ++++). Pour des raison de maintenance et de mise à jour, j'ai besoin d'approvisionner le CtrlImageListe en question avec des nouvelles images externes à la base ou à partir d'images déja présente sur le fomulaire dans des Contrôle Image.

Je parviens parfaitement à charger mes images par itérations manuelles de l'interfaces du CtrlImageListe en mode design dans le formulaire. Les images sont des icones 64x64 de profondeur de couleur 16 ou 24 bits. Mais dès que je passe en VBA pour le faire de manière plus exhaustive depuis une table contenant les URL des icones (ex: "c:\temp\icone1.ico") les images sont incorporées avec une profondeur de seulement 4bits (16 couleurs). Je ne parviens pas à paramétrer la fonction loadpicture qui assigne (je pense) l'image dans CtrlImageListe. J'execute une commande de type

"Forms(strNameFormConteneur).Controls(strCtrlListeImage).ListImages.Add i, rs.Fields("TW_ICON_NAME").Value, LoadPicture(strURL_ICON)".

Voici mon code (soyer indulgents, je débute et certaines règles de formalisation me sont inconnues).

Public Function CHARGER_IMAGE_DANS_CtrlImageListe_DEPUIS_TABLE_T_TW_ICONES(strNameFormConteneur As String, strCtrlListeImage As String, lgTailleIcon As Long)

Dim i As Long
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strURL_ICON As String


i = 0

strSQL = "SELECT T_TW_ICONES.TW_ICON_NAME, T_TW_ICONES.ICON_URL, T_TW_ICONES.TAILLE "
strSQL = strSQL + "FROM T_TW_ICONES "
strSQL = strSQL + "WHERE (((T_TW_ICONES.TAILLE)=" & lgTailleIcon & "));"

Set rs = CurrentDb.OpenRecordset(strSQL)


DoCmd.OpenForm strNameFormConteneur, acDesign

Forms(strNameFormConteneur).Controls(strCtrlListeImage).ListImages.Clear
Forms(strNameFormConteneur).Controls(strCtrlListeImage).ImageWidth = lgTailleIcon
Forms(strNameFormConteneur).Controls(strCtrlListeImage).ImageHeight = lgTailleIcon
Forms(strNameFormConteneur).Controls(strCtrlListeImage).UseMaskColor = False

While Not rs.EOF
i = i + 1
strURL_ICON = rs.Fields("ICON_URL").Value
Forms(strNameFormConteneur).Controls(strCtrlListeImage).ListImages.Add i, rs.Fields("TW_ICON_NAME").Value, LoadPicture(strURL_ICON)
rs.MoveNext
Wend

MsgBox i & " images chargées"

DoCmd.Close acForm, strNameFormConteneur, acSaveYes

Set rs = Nothing

End Function


-Existe-t-il une syntaxe de Loadpicture fonctionnant dans cette environnement Access permettant de gérer la profondeur de couleur ? La syntaxe proposée par MSDN " ex: LoadPicture("PAPER.CUR", vbLPCustom, vbLPColor, 32, 32) " ne me semble pas fonctionnelle dans mon cas (problème d'environnement ?).
-Peut-on alimenter le CtrlImageListe par une méthode autre ne passant pas par la fonction loadpicture () et notament à partir d'une image présente dans un controle Image situé sur le même formulaire en mode design.

Cordialement.