IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Afficher une image (JPG, GIF ou PNG) sur Image et WebBrowser, du Web ou en local, en VBA Excel 2010 [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut Afficher une image (JPG, GIF ou PNG) sur Image et WebBrowser, du Web ou en local, en VBA Excel 2010
    Bonjour,
    J'ai réalisé sous VBA Excel 2010 une interface (via Userform), qui propose de charger des images en provenance de son disque dur ou bien du Web (dans mon cas je charge des icônes de du site de Google-Earth).
    Cela fonctionne à peu prés...
    Quelque-soit le format, on peut, en cliquant sur le CommandButton bleu de la première ligne du Userform, charger n'importe quelle image (jpg, gif, png).
    Si l'image est de type Gif animée, elle s'affiche figée dans l'élément Image, et animée dans l'élément WebBrowser, après avoir été mise aux dimensions des blocs.
    Si l'image est de type PNG (comme celles du site de Google-Earth que je récupère, grâce au ComboBox), il faut la convertir en JPG avant de pouvoir l'afficher dans l'élément Image du Userform. Ce que je fais systématiquement.
    Dans tous les cas, les deux éléments Image et WebBrowser restitue l'image sélectionnée.
    Le problème que je rencontre est que l'affichage semble bloqué suite au chargement de l'image dans l'élément Image dès que l'on fait une sélection d'une URL de l'image à partir de la Combobox. Si je déplace la fenêtre du Userform, cela laisse une "trainée" et la liste de Combobox reste visuellement déployée en apparence (mais pas fonctionnellement).
    De plus j'ai un soucis de mise au bon format de l'image à afficher. Je souhaite qu'elle occupe toute la surface de chaque élément Image et WebBrowser. Cela semble fonctionner pour l'élément Image mais une bande blanche verticale et horizontale sur le côté droit et inférieur de l'élément WebBrowser (de quelques pixels) reste, imposant une taille réduite à l'affichage de l'image.
    Quelques regards avisés me seraient sans doute d'un grand secours...
    À vos claviers ! :^)

    PS: je joins directement mon fichier, car code un peu long à coller ici... J'ai déposé aussi 2 photos écran pour montrer le symptôme observé.
    Je joins également 1 image utile au code (InvisibleSector.png) pour l'initialisation de l'affichage des éléments graphiques.
    Images attachées Images attachées    
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut Bon, je me répond à moi-même (décidément, c'est chose courante ici, pour mon cas en tout cas... ^^)
    Bonjour (à moi même )
    Alors, j'ai trouvé la solution.
    En commentant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImporteImageEnUserForm(Me.ImageLogoSecteur, Me.TextBoxFichierLogoEtiquette)
    dans la procédure évènementielle CommandButtonBrowserLogoEtiquette_Click() de l'UserForm1, on s’aperçoit que l'affichage n'étant plus activé sur l'élément Image lors d'une sélection d'icône depuis la Combobox, il n'y a pas de problème de "gèle" de l'Useform affiché ! C'est donc que le problème se situe dans l'appel à ImporteImageEnUserForm.
    En effet, cette procédure fait appel à ImportPngWebEnUserForm dans le module M_ImagesIcones_v4_1, dans lequel à un moment donné je cache la feuille "feuille image" générée temporairement pour le transfert et la conversion de l'image icône png en jpg. Or c'est ce mode caché (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuilleImage.Visible = xlSheetVeryHidden
    ) qui fout la grouille ! Du coup, il suffit soit d'effacer cette feuille en fin de traitement, soit de réactiver la feuille active initiale, et il n'y aura plus de soucis.
    Dans mon cas j'ai choisi de faire les deux. Cela évite d'avoir des feuilles cachées oubliées même si cela nécessite de la régénérer à chaque nouveau choix dans la Combobox.
    De plus pour plus de cohérence dans le code, j'ai déclaré dans la procédure Reinit_WebBrowserImageGif du module M_GereWebBrowsers, le paramètre WB est passé en référence et de type WebBrowser au lieu d'un type Object.
    Cela donne le résultat que vous pouvez télécharger en pièce jointe de cette réponse.
    @+ et Merci qui... ^^
    Fichiers attachés Fichiers attachés

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonsoir
    vu ta capture d'écran c'est plus un soucis de mémoire graphique qu'autre chose quelque part dans ton code il doit y avoir quelque chose qui fait tourner le moulin a plein régime

    d'autant plus que utiliser un webbrowser ou un control image est absurde
    puisque tu utilise un webbrowser utilise le pour tout les format

    colle ca dans un userform avec un webbrowser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Activate()
    URL = "http://cdn-gulli.ladmedia.fr/var/jeunesse/storage/images/canalj/la-tele/dessins-animes/toto/images/les-personnages/toto/4131722-1-fre-FR/Toto.jpg"
    WebBrowser1.Navigate "about:blank"
    WebBrowser1.Document.write "<img src=""" & URL & """></img>"
    End Sub
    l'image est affichées instantanément au démarrage de l'usf il n'y a pas de surcharge mémoire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    j'etais vraiment curieux de savoir ce qui pouvait te foutre le boxon dans la mémoire

    a ben la je suis servi !!!!! bien que chez moi je n'ai eu de soucis en regardant les codes et innombrable modules que tu a pour afficher une image d'un type ou d'un autre j'ai compris

    tout d'abors tu utilise WIA pour convertir un png en jpeg c'est une librairie très lourde
    ensuite j'ai regardé les autres modules pioufffff tu veux aller ou avec ca (sur la lune )

    tu trouvera dans les contributions un peu vielle je te l'accorde il faudra que tu cherche une fonction avec une requête et adob pour télécharger une image du net (résultat quasi instantané)

    tes modules avec apis je n'en parlerais pas je me demande bien ce qui foutent la

    bref un module avec au plus 50 lignes( et je suis large ) ferait la même chose

    dis moi comment tu obtiens simplement les url des images c'est tellement le foutoir dans ce code que j'ai du mal a cerné ce que qui fait quoi

    Edit:bon j'ai trouver tes url !!

    tu devrais après avoir vu dans le debug les mètres en commentaires tout ces debug.print ils pompes énormément puisque tu connais les urls car c'est toi qui créé les array j'aurais fait plus simple pour commencer que par la déjà
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/05/2008, 10h31
  2. Afficher une photo .Jpg sur Excel via macro Excel
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/04/2008, 11h51
  3. gifs animés sur image jpg
    Par DARDI dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/03/2007, 10h22
  4. Liste d'images jpg, gif, bmp
    Par kurkaine dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/09/2006, 15h32
  5. Lecture d'images [jpg] [gif] [...]
    Par xenos dans le forum Langage
    Réponses: 2
    Dernier message: 10/10/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo