De: Laurent longre Objet: Re: indice et exposant Date : mardi 25 avril 2000 13:00 Philippe et Frédéric, MERCI pour cette question géniale. Une bonne heure de désespération à triturer l'API dans tous les sens, et... voici le résultat (moi non plus, je ne pensais pas que ce soit possible avant il y a 10 minutes): '================================================== Private declare function GetTempFilenameA Lib "Kernel32" _ (ByVal lpszPath As String, ByVal lpPrefixString As String, _ ByVal wUnique As long, ByVal lpTempFilename As String) As long Private declare function OpenClipboard Lib "User32" _ (ByVal hwnd As long) As long Private declare function CloseClipboard Lib "User32" () As long Private declare function GetClipboardData Lib "User32" _ (ByVal uformat As long) As long Private declare function CopyEnhMetaFileA Lib "Gdi32" _ (ByVal hemfSrc As long, ByVal lpszFile As String) As long Private declare function deleteEnhMetaFile Lib "Gdi32" _ (ByVal hdc As long) As long Sub Test() dim FicTmp As String FicTmp = Space(160) GetTempFilenameA Environ("TMP"), "", 0, FicTmp FicTmp = Left$(FicTmp, InStr(FicTmp, vbNullChar) - 1) worksheets("Feuil1").range("A12").CopyPicture OpenClipboard 0 deleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), FicTmp) CloseClipboard with Userform1 .Image1.Picture = LoadPicture(FicTmp) Kill FicTmp .show end with end Sub '================================================== La procédure Test "copie" l'image de la cellule Feuil1!A12 dans le contrôle Image1 de Userform1 et affiche celui-ci ensuite. Pas de problème pour remplacer Image1 par un Label ou autre contrôle ayant la propriété Picture. Pas de problème non plus... pour copier l'image d'une plage de cellules! Incidemment, je viens de trouver le moyen de sauvegarder une plage de cellules dans un fichier image au format EMF (fichier temporaire "FicTmp" dans cette macro, transmis ensuite tout simplement à LoadPicture). Merci de tester chez vous et de me dire si ça marche également (ici: Excel 97 SR-2, Win95 OSR-2). Laurent Frédéric Sigonneau a écrit : > > Philippe Dzewowski a écrit : > > > > Bonjour à tous > > merci d'avance de votre aide.... voici mon pb : > > lorsque je copie une cellule contenant des indices et des exposants par > > Ctrl+C par exemple, et que dans une Userform qui contient un contrôle Label > > (ou Textbox...), je sélectionne la propriété Picture et que je fasse un > > coller > > par CTRL+V cela marche ! Mon contrôle respecte bien la mise en forme du > > texte.... Mon seul souci est que je n'arrive pas à faire cela par > > programmation pour automatiser cette procédure.... > > J'ai juste une piste à te proposer, mais je n'ai pas réussi à en faire > une solution. > La propriété Picture d'un Label accepte une image. Quand tu colles > directement dans la propriété, tu colles une image. > On peut obtenir une image d'une cellule (et dans ce cas tes exposants et > autres mises en forme sont conservés) avec la méthode CopyPicture. Je > pense qu'utiliser cette méthode équivaut à utiliser "l'appareil photo" > d'Excel. > Pas de problème pour copier l'image obtenue dans une autre cellule en > faisant par ex > > [A1].CopyPicture > [B1].PasteSpecial > > Pas moyen par contre de coller l'image dans un Label ou un objet Image. > Les propriétés Picture de ces 2 objets attendent une image provenant > d'un fichier, et récupéré par LoadPicture(chemin du fichier). > Il y a sûrement un truc, mais je ne l'ai pas trouvé... > Désolé > FS > -- > Frédéric Sigonneau > Gestions de temps : http://perso.wanadoo.fr/frederic.sigonneau > Time managements : http://perso.wanadoo.fr/frederic.sigonneau/index2.htm