Parametre du WebBrowser

Bonjour j'ai un fichier Client qui incorpore un WebBrowser

Ce même WebBrowser est paramétré pour afficher un plan par Google Maps.

Au début le fichier fonctionnait mais dans le WebBrowser une notification pour poursuivre.

Maintenant je n'ai plus le plan mais une page tel que l'image ci dessous :

2018 01 26

Voici le code :

TextBox20.Text = ("http://maps.google.fr/maps?q=" & TextBox5 & ",+" & ComboBox3 & "+" & ComboBox2 & ", " & ComboBox9)

La suite:

Private Sub Initialise_ListBox1()
    Dim MaSourceGoogle As String
    Sheets("Feuil2").Activate        ' ...........................Sélectionne la feuille
    For T = 1 To 29        ' .....................................Boucle sur les Labels
        Controls("Label" & T) = Range("A1:AC1").Cells(T)        ' Alimente tous les labels
    Next T        ' ..............................................Fin de Boucle
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)        ' .................Numéro de la Ligne
        ComboBox1 = .List(.ListIndex, 1)        ' ................Civilité
        For T = 2 To 6        ' ..................................Nom Prénom
            UserForm2.Controls("TextBox" & T) = .List(.ListIndex, T)
        Next T        ' ..........................................Fin de boucle
        ComboBox2 = .List(.ListIndex, 7)        ' ................Code Postal Domicile
        ComboBox3 = .List(.ListIndex, 8)        ' ................Ville Domicile
        For T = 7 To 19        ' .................................Nom Prénom
            UserForm2.Controls("TextBox" & T) = .List(.ListIndex, T + 2)
        Next T        ' ..........................................Fin de boucle
        ComboBox4 = .List(.ListIndex, 22)         ' ..............Collaborateurs 1
        ComboBox5 = .List(.ListIndex, 23)         ' ..............Collaborateurs 2
        ComboBox6 = .List(.ListIndex, 24)         ' ..............Collaborateurs 3
        ComboBox7 = .List(.ListIndex, 25)         ' ..............Collaborateurs 4
        ComboBox8 = .List(.ListIndex, 26)         ' ..............Collaborateurs 5
        ComboBox9 = .List(.ListIndex, 27)         ' ..............Pays
        TextBox20 = .List(.ListIndex, 28)         ' ..............Lien Google Maps
        TextBox2.SetFocus
    End With
    '*************************************************************
    '*                       Format                              *
    '*************************************************************
    TextBox2.Font.Bold = True
    ComboBox2 = Format(ComboBox2.Value, "0# ###")
    TextBox11 = Format(TextBox11.Value, "(0#) ## ## ## ##")
    TextBox16 = Format(TextBox16.Value, "dd mmmm yyyy")
    ' URL de l'image sur internet
    MaSourceGoogle = TextBox20.Value
    WebBrowser1.Navigate MaSourceGoogle
End Sub

J'espère que j'ai été explicite sinon je joindrai le fichier si besoin

En vous remerciant

Cordialement

Bonjour,

Tu as très bien expliqué le problème que tu rencontres ...

Cela dit, pour creuser et découvrir ce qui se passe ... tu devrais joindre ton fichier ...

Hello,

Dans son cas je doute que le fichier serve, le pb est bien plus complexe que ce qui apparaitra dans le fichier et vba.

De plus son pb à au moins 2 natures :

1/ Microsoft a fait des changements dans Office depuis 2013, en gros, Internet Explorer étant remplacé par Edge, (pas vu dans les ref VBA son ctrl par contre...), cela crée des tas de pb de compatibilité, qu'Office ne propose même pas gérer par Edge par défaut.

> Ctrl Webbrowser ne marche plus, sur les fichiers version >2013 (mon cas), sans à modifier les clefs registre système pour récupérer ce type de ctrl.

> Cela continuait à fonctionner étrangement par le mode compatibilité des anciens fichier pré-2013, mais Microsoft à eu la gentillesse de supprimer ce mode aussi, il y'a quelques mois.

Perso, je n'ai pas changé les clefs registre, donc je ne pourrai pas beaucoup aider, si tu as une DSI, tu devra leur demander avant car c'est leur responsabilité, à prendre en compte qu'il suffit d'une autre MàJ pour devoir tout à recommencer, en risquant d'avoir des bugs systèmes.

Un lien officiel parlant du pb Webbrowser par microsoft pour 2013 ici :

https://support.microsoft.com/en-us/help/2793374/cannot-insert-certain-scriptable-activex-controls-into-office-2013-doc

Concernant l'activation du ctrl webbrowser dans 2016 abordé par un forum :

https://social.msdn.microsoft.com/Forums/en-US/f33240d1-8865-4bff-b1d0-0e7f0b841249/cannot-insert-webbrowser-in-2016-excel-for-use-in-vba?forum=exceldev

2/ Concernant Google Map, webbrowser marche comme dit, avec Internet Explorer, du coup, le truc étant obsolète, remplacé par Edge, Google ne gère plus vraiment de liaisons avec, à cause des pb de sécu du à l’obsolescence, donc ça crée des soucis à ce niveau.

Néanmoins voir la solution de Google, si accès à Internet Exploreur (non pas Edge, pas pareil) ça pourrait résoudre le pb :

https://support.google.com/maps/answer/3118069?hl=fr

Possible aussi de changer des clefs registre vu dans ce lien :

http://forum.idimager.com/viewtopic.php?f=57&t=25681&sid=ff0c803d614d87ee95c7c9267a223cf5&start=15

2e solution trouvé qui semble meilleur, il semble possible de changer le navigateur lié à webbrowser, mais là encore je ne peux beaucoup aider, voir ce lien :

https://www.devhut.net/2013/10/18/webbrowser-activex-control-google-maps-invalid-character-scripting-error/

Si tu arrive à trouvé une solution, indique là sur le forum, ça permettra d'avoir une archive supplémentaire de ce qu'il faudra faire.

Sinon pour info, dans le volet Dev, tu peux récupérer le complément Cartes Bing, jamais utilisé en VBA ou autre, mais ça existe.

Merci Waard pour ton explication très argumentée et complète.

Modifié les clés de registre impossible pour moi car le fichier va être partagé. Chaque personne a une version d'office différente et il met impossible de changer les clés de registre de tous.

Je vais voir pour contourner le problème différament.

Je vais lire tout tes liens peut-être j'y trouverai une solution ou une autre vision de mon fichier

James007 je joins le fichier si tu vois une autre solution.

En attendant je vais me documenter avec l'explication de Waard.

Cordialement

Hello,

En regardant ton fichier, j'ai réussi à le faire tourner, pourquoi celui-ci et pas mes anciens ?

Si tu remplace https par http, dans tes lignes de codes de l'userform 2, google map remarche.

capture 1

Cela va fonctionnait qu'un temps ensuite tu auras le même soucis

J'ai contourné le problème en ouvrant automatiquement une fenêtre sur IE.

Private Sub Initialise_ListBox1()
    Dim MaSourceGoogle As String
    Sheets("Feuil2").Activate        ' ...........................Sélectionne la feuille
    For T = 1 To 29        ' .....................................Boucle sur les Labels
        Controls("Label" & T) = Range("A1:AC1").Cells(T)        ' Alimente tous les labels
    Next T        ' ..............................................Fin de Boucle
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)        ' .................Numéro de la Ligne
        ComboBox1 = .List(.ListIndex, 1)        ' ................Civilité
        For T = 2 To 6        ' ..................................Nom Prénom
            UserForm2.Controls("TextBox" & T) = .List(.ListIndex, T)
        Next T        ' ..........................................Fin de boucle
        ComboBox2 = .List(.ListIndex, 7)        ' ................Code Postal Domicile
        ComboBox3 = .List(.ListIndex, 8)        ' ................Ville Domicile
        For T = 7 To 19        ' .................................Nom Prénom
            UserForm2.Controls("TextBox" & T) = .List(.ListIndex, T + 2)
        Next T        ' ..........................................Fin de boucle
        ComboBox4 = .List(.ListIndex, 22)         ' ..............Collaborateurs 1
        ComboBox5 = .List(.ListIndex, 23)         ' ..............Collaborateurs 2
        ComboBox6 = .List(.ListIndex, 24)         ' ..............Collaborateurs 3
        ComboBox7 = .List(.ListIndex, 25)         ' ..............Collaborateurs 4
        ComboBox8 = .List(.ListIndex, 26)         ' ..............Collaborateurs 5
        ComboBox9 = .List(.ListIndex, 27)         ' ..............Pays
        TextBox20 = .List(.ListIndex, 28)         ' ..............Lien Google Maps
        TextBox2.SetFocus
    End With
    '*************************************************************
    '*                       Format                              *
    '*************************************************************
    TextBox2.Font.Bold = True
    ComboBox2 = Format(ComboBox2.Value, "0# ###")
    TextBox11 = Format(TextBox11.Value, "(0#) ## ## ## ##")
    TextBox16 = Format(TextBox16.Value, "dd mmmm yyyy")
    ' URL de l'image sur internet
    MaSourceGoogle = TextBox20.Value
    Navigateur
    If ComboBox2.Value > 1 Then
        WebBrowser1.Navigate MaSourceGoogle
    Else
        WebBrowser1.Navigate "about:blank"
    End If
End Sub
Sub Navigateur()
Dim Browser As SHDocVw.InternetExplorer 'Microsoft Internet Controls
Dim URL As String
Dim MaSourceGoogle As String
MaSourceGoogle = TextBox20.Value
  URL = MaSourceGoogle
  Set Browser = New InternetExplorer
    Browser.Silent = True
    Browser.Navigate URL
    Browser.Visible = True
  Do
    Loop Until Browser.ReadyState = READYSTATE_COMPLETE
End Sub

En attendant de trouver mieux.

J'ai lu tous tes liens et en effets le plus simple et de modifier le registre. Mais je reste convaincu que l'on peut contourner le problème.

Je ne clos pas tant que je n'ai pas trouvé

Cordialement

Version plus simplifié :

dans les Userforms 2, 3 , 4 et 5 à remplacer par :

 ' URL de l'image sur internet
    MaSourceGoogle = TextBox20.Value
    ' à partir d'ici on efface tout pour y mettre celà
    ShellExecute 0, vbNullString, MaSourceGoogle, vbNullString, vbNullString, 0

    If Not ComboBox2.Value = "" Then
        WebBrowser1.Navigate MaSourceGoogle
    Else
        WebBrowser1.Navigate "https://www.google.fr/?gws_rd=ssl#spf=1"
    End If
End Sub

et dans un module M_Affichage

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
                                                ByVal lpOperation As String, ByVal lpFile As String, _
                                                ByVal lpParameters As String, ByVal lpDirectory As String, _
                                                ByVal nShowCmd As Long) As Long

J'ai beau parcourir tous les sites parlant de cette erreur de non pris en charge par office 2016 je n'ai toujours rien trouver.

Je n'ai pas assez de recul sur le sujet pour y trouver une solution à ce problème

Peut être une solution en modifiant la clé de registre dès le départ dans l'ouverture du fichier :

A remplacer par :

Private Sub Workbook_Open()
    Call SetSettings("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\Excel.exe", 11001, "REG_DWORD", False)
    MsgBox ("Bonne journée !" & Chr(10) & "Nous sommes le " & Format(Date, "dddd d mmmm yyyy"))
    Application.Speech.Speak [A4]
    TesteSiDossierExiste
    With Application
        .DisplayFullScreen = True     ' ...........................................................Masquer la barre d'état
        .DisplayStatusBar = True    ' .............................................................Masquer barre de formule
        .DisplayFormulaBar = True    ' ............................................................Masquer les onglets
        .WindowState = xlNormal    ' ..............................................................État de la fenêtre
    End With
    With ActiveWindow
        .DisplayWorkbookTabs = False    ' .........................................................Masquer les onglets
        .DisplayHeadings = False     ' ............................................................Masquer N°ligne et Colonne"
    End With
    Start
End Sub

et dans le module Démarrage

inserer :

Public Sub SetSettings(Optional strPfad As String, Optional strInhalt As String, _
    Optional strTyp As String, Optional bolDeleteKey As Boolean = False)
    Dim wshshell As Object
    Set wshshell = CreateObject("WScript.Shell")
    If bolDeleteKey Then
        wshshell.RegDelete strPfad
    Else
        wshshell.RegWrite strPfad, strInhalt, strTyp
    End If
    Set wshshell = Nothing
End Sub

et dans le userform ;

' URL de l'image sur internet
    MaSourceGoogle = TextBox20.Value
    ' Nous n'avons plus besoin de ceci
    ' ShellExecute 0, vbNullString, MaSourceGoogle, vbNullString, vbNullString, 0 

    If Not ComboBox2.Value = "" Then
        WebBrowser1.Navigate MaSourceGoogle
    Else
        WebBrowser1.Navigate "https://www.google.fr/?gws_rd=ssl#spf=1"
    End If
End Sub

En attendant de vous lire

Cordialement

Une erreur s'est glissé dans initialisation de la ListBox1 de l'userform3

Je n'arrive plus à voir mon erreur. Pouvez vous m'indiquer?

Le fichier est juste dans le message précédent

Private Sub Initialise_ListBox1()
    Dim MaSourceGoogle As String
    Sheets("Feuil3").Activate        ' ............................................................Sélectionne la feuille
    For T = 1 To 15        ' ......................................................................Boucle sur les Labels
        Controls("Label" & T) = Range("A1:O1").Cells(T)        ' ..................................Alimente tous les labels
    Next T        ' ...............................................................................Fin de Boucle
    With ListBox1
        TextBox1 = .List(.ListIndex, 0)        ' ..................................................Groupe
        ComboBox1 = .List(.ListIndex, 1)        ' .................................................Civilité
        For T = 2 To 8        ' ...................................................................Nom Prénom
            UserForm3.Controls("TextBox" & T) = .List(.ListIndex, T)
        Next T        ' ...........................................................................Fin de boucle
        ComboBox2 = .List(.ListIndex, 9)        ' .................................................Code Postal
        ComboBox3 = .List(.ListIndex, 10)        ' ................................................Ville
        ComboBox4 = .List(.ListIndex, 11)        ' ................................................Certifié
        TextBox9 = .List(.ListIndex, 12)        ' .................................................Dare de création
        ComboBox5 = .List(.ListIndex, 13)         ' ...............................................Pays
        TextBox10 = .List(.ListIndex, 14)         ' ...............................................Lien Google Maps
        TextBox1.SetFocus
    End With
    '**********************************************************************************************
    '*                                           Format                                           *
    '**********************************************************************************************
    TextBox2.Font.Bold = True
    ComboBox2 = Format(ComboBox2.Value, "0# ###")
    TextBox6 = Format(TextBox6.Value, "(0#) ## ## ## ##")
    TextBox9 = Format(TextBox9.Value, "dd mmmm yyyy")
    ' URL de l'image sur internet
    MaSourceGoogle = TextBox10.Value
    'ShellExecute 0, vbNullString, MaSourceGoogle, vbNullString, vbNullString, 0

    If Not ComboBox2.Value = "" Then
        WebBrowser1.Navigate MaSourceGoogle
    Else
        WebBrowser1.Navigate "https://www.google.fr/?gws_rd=ssl#spf=1"
    End If
End Sub

Merci

Rechercher des sujets similaires à "parametre webbrowser"