bonjour l'assemblé !

j'ai une structure qui permet d'afficher une image.

la variable "path" contient l'adresse complete (c:/mesdoc/image.jpg, par exemple)
target = un objet range correspondant à la cellule que l'utilisateur vient de cliquer.
la variable booleene "comment" est a true si je souhaite que l'image soit afficher en commentaire, et a false si je veu l'afficher dans une image.
objet_image comporte le NOM de l'objet controle "image"
je vais donc faire appel à un "callbyname" pour appeler les procédure (dont load image)

enfin, en analysant l'extention de path, si il s'agit de .png, je créé un browser au dessus du controle image, qui doit porter le meme nom que le controle image avec concaténé "browser", de sorte a pouvoir le supprimer ensuite.

j'ai trois soucis :

1) la fonction pour afficher dans les commentaire ne marche pas. aucun message d'erreur l'expliquant; je seche.

2) la structure de suppression ne doit sans doute pas fonctionner. je ne peu la debugger parce que je n'en suis pas la.

3) mon plus gros soucis : la strucutre de création plante. erreur 435.
je ne peu savoir a quel ligne exactement, car arrivé sur "add", excel m'averti qu'il ne peu traiter "point a point" completement, avant de planter.

en pratique, j'ai bien un controle browser qui se créé, il est a la bonne place et a la bonne taille (il recouvre l'image)
mais aucune image se charge.



si vous voyez la ou je me trompe ... moi, la, j'y pige que dale


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
    If comment = True Then
        'l'image doit apparaitre en commentaire dans la cellule "target"
'<> prb !
        target.comment.Shape.Fill.UserPicture path
    Else
        'l'image doit s'afficher dans un controle nommé dans "objet_image"
        If what_extention(path) = ".png" Then
            'une image PNG sera affiché dans un webbrowser
 
            'on commence par regarder si le controle webbrowser lié a objet_image existe.
            If CObj(objet_image & "_browser") = True Then
                'si il existe, on le rempli
                Set oBrw = CallByName(ActiveSheet, objet_image & "_browser", VbGet)
                hauteur = oBrw.Height
                largeur = oBrw.Width
                oBrw.Navigate "ABOUT:<HTML><HEAD><BODY><IMG WIDTH=" & largeur & " HEIGHT=" & hauteur & " SRC='" & path & "'</IMG></BODY></HTML>"
            Else
                'si il n'existe pas, on le créé, puis on le rempli
                'On Error Resume Next
                Set oPic = CallByName(ActiveSheet, objet_image, VbGet)
                Set oBrw = ActiveSheet.OLEObjects.Add(ClassType:="Shell.Explorer.2")
                With oBrw
                    .Left = oPic.Left
                    .Top = oPic.Top
                    .Width = oPic.Width
                    .Height = oPic.Height
                    .Name = objet_image & "_browser"
                End With
                Set oBrw = CallByName(ActiveSheet, objet_image & "_browser", VbGet)
                hauteur = oBrw.Height
                largeur = oBrw.Width
                oBrw.Navigate "ABOUT:<HTML><HEAD><BODY><IMG WIDTH=" & largeur & " HEIGHT=" & hauteur & " SRC='" & path & "'</IMG></BODY></HTML>"
            End If
        Else
            'on commence par regarder si le controle webbrowser lié à objet_image existe.
            If CObj(objet_image & "_browser") = True Then
                'si il existe, on le supprime, puis on affice sur le controle image
                Set oBrw = CallByName(ActiveSheet, objet_image & "_browser", VbGet)
                oBrw.Delete
                Set oPic = CallByName(ActiveSheet, objet_image, VbGet)
                Set oPic.picture = LoadPicture(path)
            Else
                'si il n'existe pas, on affiche directement dans le controle image
                Set oPic = CallByName(ActiveSheet, objet_image, VbGet)
                Set oPic.picture = LoadPicture(path)
            End If
        End If
    End If
concernant mes fonctions perso :

what_extention(path) retourne seulement l'extention de l'adresse d'un fichier (.jpg, .png, .doc ...)
avec l'option booleenne "true", what_extention(path, true) il retourne "true" si l'extention est une image

CObj(name) retourne false ou true celon si le controle portant le nom "name" existe ou non.

j'espere que le code est complet pour vous permettre de le comprendre. c'est une infime partie d'une macro de plusieurs millier de ligne, alors j'espere avoir indiqué assez d'information pour vous.

dans l'attente de vos lumières.

cordialement