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 :

Problème GIF dans Userform [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien contrôle
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien contrôle

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Par défaut Problème GIF dans Userform
    Bonjour,
    Tout est dans le titre, je m'explique.

    J'ai un Userform à plusieurs pages,
    Sur la page 0, je fais apparaitre un GIF par un Webbrowser pendant le chargement d'une action :

    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
    Sub AfficheGIF()
    ' Permet d'afficher un GIF pendant le chargement de la nomenclature
    Dim Fs As Object
     
    Sommaire.WebBrowser1.Visible = True
     
    Set Fs = CreateObject("Scripting.FileSystemObject")
    'Supprime l'image temporaire si elle existe
    If Fs.FileExists(ThisWorkbook.Path & "\imageTemp.gif") Then
        Kill ThisWorkbook.Path & "\imageTemp.gif"
    End If
     
    Dim i As Long, k As Long, P As Long, F As Long
    Dim Hauteur As Long, Largeur As Long
    Dim S As String
    Dim j As Integer
    Dim B() As Byte
    Dim Tb
     
    With ThisWorkbook.Worksheets("GIF").UsedRange
        Tb = .Value
        P = .Count
    End With
     
    ReDim Preserve B(1 To P)
    For i = 1 To UBound(Tb, 1)
        For j = 1 To UBound(Tb, 2)
            k = k + 1
            B(k) = Tb(i, j)
        Next j
    Next i
     
    F = FreeFile
    S = ThisWorkbook.Path & "\imageTemp.gif"
    Open S For Binary Access Write As F
    Put #F, , B
    Close F
     
    With Sommaire.WebBrowser1
        Largeur = .Width * 96 / 72
        Hauteur = .Height * 96 / 72
        .Navigate _
            "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG WIDTH=" _
            & Largeur & " HEIGHT=" & Hauteur & " SRC='" & S & _
            "'</IMG></BODY></CENTER></HTML>"
    End With
     
    End Sub
    Une fois cette action terminé, je cache le Webbrowser et supprime l'image du GIF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sommaire.WebBrowser1.Visible = False
     
    Dim Fs As Object
     
    Set Fs = CreateObject("Scripting.FileSystemObject")
    'Supprime l'image temporaire si elle existe
    If Fs.FileExists(ThisWorkbook.Path & "\imageTemp.gif") Then
        Kill ThisWorkbook.Path & "\imageTemp.gif"
    End If
    A côté de ça, dans la page 1, j'ai un bouton "RESET" qui me permet de tout remettre à zéro et de retourner sur la page 0 pour recommencer une nouvelle action.
    Dans lequel j'ai mis le code suivant, me permettant d'effacer le contenu du Webbrowser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Hauteur As Long, Largeur As Long
     
    With Sommaire.WebBrowser1
        Largeur = .Width * 96 / 72
        Hauteur = .Height * 96 / 72
        .Navigate _
            "ABOUT:BLANK"
    End With
    Voila le début de mon problème, ça me donne une erreur : Erreur d'exécution, la méthode 'Navigate' de l'objet 'IWebBrowser2' a échoué.

    Par contre, si je créer un bouton sur la page 0 et que je lui met le code d'effacement du Webbrowser, je n'ai plus cette erreur et tout fonctionne.

    Auriez-vous une idée ?
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    je ne suis pas un pro ultime du html, mais tu as des balises ouvertes qui ne se ferment pas…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG WIDTH=" _
            & Largeur & " HEIGHT=" & Hauteur & " SRC='" & S & _
            "'</IMG></BODY></CENTER></HTML>"
    Si tu faisais une page propre pour voir ce que ca donne ensuite ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    Technicien contrôle
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien contrôle

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Par défaut
    Bonjour et merci de votre réponse,
    Moi non plus je ne suis pas un pro (plutôt un débutant +)
    Le code dont vous parlez a été pris sur https://silkyroad.developpez.com/VBA/ExcelImageGIF/.
    J'ai juste changé le chemin du GIF.
    La seul différence que j'ai trouvé, c'est la position du bouton "Reset".
    S'il est positionné sur la page 1, sa me donne l'erreur cité dans le post 1.
    Par contre si je le déplace sur la page 0, je n'ai aucune erreur.

  4. #4
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    Salut,
    les contrôles multipages n'aiment pas trop les activex surtout si on essaie d'en commander un à partir d'une autre page.
    il y a la solution d'utiliser un contrôle tabstrip on le "bricolant" pour qu'il ait un comportement similaire au multipage. Pour faire ceci on jouera sur la visibilité des composants voici un exemple
    avec un webbrowser en tab1 et deux boutons en tab2 :
    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
    Private Sub AfficheGIF_Click()
    AfficheGIF2
    End Sub
     
    Private Sub EffaceGif_Click()
    WebBrowser1.Navigate2 "ABOUT:BLANK"
    End Sub
     
    Private Sub TabStrip1_Change()
    Select Case TabStrip1.Value
    Case 0
    WebBrowser1.Visible = True
    EffaceGif.Visible = False
    AfficheGIF.Visible = False
    Case 1
    WebBrowser1.Visible = False
    EffaceGif.Visible = True
    AfficheGIF.Visible = True
    End Select
    End Sub
     
    Private Sub UserForm_Activate()
    TabStrip1.Value = 0
    WebBrowser1.Visible = True
    EffaceGif.Visible = False
    AfficheGIF.Visible = False
    AfficheGIF2
    End Sub
     
    Sub AfficheGIF2()
    Dim S As String
    S = "M:\Test\dance.gif"
    WebBrowser1.Navigate2 S
    End Sub
     
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    WebBrowser1.Document.body.Scroll = "no"
    End Sub
    voici le résultat :

    Nom : tabstrip_excel.gif
Affichages : 665
Taille : 107,4 Ko


    Nullosse le plus nul des apprentis programmeur

  5. #5
    Membre averti
    Homme Profil pro
    Technicien contrôle
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien contrôle

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Par défaut
    Bonjour et merci de ta réponse,
    Je comprends l'idée mais je ne pense pas que ça pourras fonctionner dans mon cas.
    Je me suis peut-être mal expliqué.

    Voila le visuel de mon Userform.
    Nom : Capture.JPG
Affichages : 584
Taille : 49,8 Ko

    Dans l'encadré 1, je rentre un code article puis je clique sur le bouton "OK".
    Ce qui ouvre un fichier base de donnée Access.
    Le temps qu'Access fasse son boulot, j'affiche un message d'attente dans l'encadré 2 et le GIF dans l'encadré 3.
    Un fois qu'Access à fini, l'opérateur sélectionne son produit "CABLE, PLATEFORME..." et clique sur "CALCULER" qui lance une macro et bascule sur l'onglet approprié.

    Voila le visuel d'un onglet.
    Nom : Capture2.JPG
Affichages : 576
Taille : 146,2 Ko
    Dans chacun des onglets, il y a un bouton reset qui lance une macro pour tout RAZ et re-bascule sur l'onglet "Sommaire" (pour pouvoir recommencer un autre article).
    C'est la que le problème ce créé.
    Juste une précision, la macro pour le GIF est dans un Module, pas dans le Userform.

    Est-ce que ça pourrait venir de la ?
    Merci.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien contrôle
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien contrôle

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Par défaut
    Bonjour à tous,
    J'ai trouvé une solution.
    Comme l'a dit @Nullosse, le Multipage n'est pas forcément le mieux pour ce control activeX.
    Enfaite j'ai juste changé la position du Webbrowser.
    A l'initial, j'ai créé un Userfom sur lequel j'ai mis un Multipage sur lequel j'ai mis tous mes bouton et autres (dont le Webbrowser).
    Donc j'ai changé la position du Webbrowser en le déplaçant sous le Multipage.
    En faisant plusieurs tests, ça fonctionne. Je n'ai plus aucune erreur.
    Merci pour toutes vos propositions et à une prochaine fois.

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

Discussions similaires

  1. [XL-365] Problème GIF dans Userform
    Par oliv481 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/05/2020, 19h27
  2. problème tableau dans userform
    Par madfox48 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/12/2012, 11h35
  3. GIF dans userform
    Par spud96 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2010, 22h07
  4. problème code dans Userform
    Par xwypro dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/02/2008, 11h41
  5. (VBA-E) Problème combobox dans userform
    Par gringo69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/06/2006, 18h28

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