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 :

Comment passer des paramètres à IE.document.parentWindow.execScript [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut Comment passer des paramètres à IE.document.parentWindow.execScript
    Bonjour,

    J'essai de piloter un site web depuis mon code Excel.
    Je me heurte à un problème de passage de paramètres:

    56909 est un numéro et geracole un pseudo.
    Quand je fais l'appel comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call IE.document.parentWindow.execScript("validModifEnigme(""56909"",""geracole"")", "JavaScript")
    Ça se passe bien, ma page s'affiche et je peux continuer.

    Je veux passer des variables pour le numéro et le pseudo, je n'arrive pas à coder correctement.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call IE.document.parentWindow.execScript("validModifEnigme(" & Chr(34) & Chr(34) & noCiste & Chr(34) & Chr(34) & ","  _
                & Chr(34) & Chr(34) & Pseudo & Chr(34) & Chr(34) & ")" & Chr(34) & "," _
                & Chr(34) & "JavaScript" & Chr(34))
    Ou d'autres combinaisons mais chaque fois c'est rejeté, a voir dans le code
    Qui peut me donner la bonne syntaxe ?
    Merci beaucoup.

    Ci-dessous le code complet :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub ChangerTexteEnigme()
    'Déclaration des variables
    Dim i, l As Single
    Dim wTexte, actEnigme, newEnigme As String
    Dim coderr As Byte
    Dim noCiste, Pseudo As String
     
    noCiste = "56909": Pseudo = "geracole"
     
    ' Chargement de la page web de ciste.net
        coderr = 1
        Set IE = New InternetExplorer
        IE.Navigate "https://www.cistes.net"
    ' Affichage de la 1ere fenêtre
        coderr = 2
        If WaitIE(IE, 30) Then GoTo esub 'premier appel wait 30s pour lancer IE
        IE.Visible = True
        IE.Navigate "https://www.cistes.net/infos.php"
    ' Affichage des données personnelles
        coderr = 3
        If WaitIE(IE, 30) Then GoTo esub 'premier appel wait 30s pour lancer IE
    ' Affichage des cistes cachées
        IE.Navigate "https://www.cistes.net/infoscistesc.php"
        If WaitIE(IE, 30) Then GoTo esub 'premier appel wait 30s pour lancer IE
    ' Lancer la page modifier l'énigme
        coderr = 4
    '-> Fonctionne
        Call IE.document.parentWindow.execScript("validModifEnigme(""56909"",""geracole"")", "JavaScript")
    ' -> ne marche pas
        Call IE.document.parentWindow.execScript("validModifEnigme(nociste,pseudo)", "JavaScript")
        Call IE.document.parentWindow.execScript("validModifEnigme(" & Chr(34) & Chr(34) & noCiste & Chr(34) & Chr(34) & "," _
                & Chr(34) & Chr(34) & Pseudo & Chr(34) & Chr(34) & ")" & Chr(34) & "," _
                & Chr(34) & "JavaScript" & Chr(34))
    '-> Essai avec variable
          Dim funct As String    
         funct = Chr(34) & "validModifEnigme(" & Chr(34) & Chr(34) & noCiste & Chr(34) & Chr(34) & "," _
                & Chr(34) & Chr(34) & Pseudo & Chr(34) & Chr(34) & ")" & Chr(34) & "," _
                & Chr(34) & "JavaScript" & Chr(34)
        Debug.Print funct
        Call IE.document.parentWindow.execScript(funct)
    ' suite do code effacé  
    esub:
      IE.Quit
    End Sub
     
     
    ' Attend que la page internet soit chargée
    ' pTimeOut est un time out en secondes (WaitIE vaut True si Timeout)
    Public Function WaitIE(oIE As InternetExplorer, Optional pTimeOut As Long = 10) As Boolean
    Dim lTimer As Double
    lTimer = Timer
    Do
        DoEvents
       If oIE.readyState = READYSTATE_COMPLETE And Not oIE.Busy Then Exit Do
       If pTimeOut > 0 And Timer - lTimer > pTimeOut Then
           WaitIE = True: MsgBox ("Time-Out Internet Explorer")
           Exit Do
       End If
    Loop
    End Function

  2. #2
    Membre régulier
    Homme Profil pro
    contrôle de gestion - data management
    Inscrit en
    Mai 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : contrôle de gestion - data management
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2018
    Messages : 33
    Points : 73
    Points
    73
    Par défaut
    Bonjour, as-tu essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call IE.document.parentWindow.execScript("validModifEnigme(" & nociste & "," & pseudo & ")", "JavaScript")
    Bonne soirée.

  3. #3
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut
    Non, message "Impossible d'effectuer l'opération à cause de l'opération suivante 80020101 ".
    J'ai cherché en vain des exemples.
    Malheureusement, tu ne peux pas tester mon code car il te faut un pseudo et un mot de passe.
    Merci quand même.
    Pas d'autre idée ?
    Bonne nuit.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    salut
    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
    Sub test()
        Dim IE, url
        url = "https://www.cistes.net/"
        With CreateObject("internetexplorer.application")
            .Visible = True
            .navigate url
            Do: DoEvents: Loop While .readystate <> 4
            .document.getelementsbyname("login")(0).Value = "toto"
            .document.getelementsbyname("password")(0).Value = "motdepasse"
            .document.getelementsbytagname("input")(7).Click
            '
            'blabla
            'blabla
            'reste du code d'exploitation
            '.....
            '.quit a debloquer pour fermer IE
        End With
    End Sub
    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

  5. #5
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut
    Bonjour Patrick,

    J'attendais ta réponse, je lis beaucoup de tes contributions, souvent très utiles.
    Mais là, est-ce que tu réponds à ma demande ?

    Depuis le site www.cistes.net la saisie du login et du mot de passe ne doit pas être automatisée, en général, le login est enregistré dans le navigateur (ta réponse concerne cela non ?)

    Dans la suite du traitement que je veux automatiser, je veux pouvoir modifier le texte d'une énigme sans dérouler toutes les pages. Pour cela après accès à la liste des cistes du pseudo, je fais appel à la fonction validModifEnigme du fichier html.
    Si le programme appelle la fonction avec les valeurs de numéro de la ciste = "56909" et du pseudo "geracole", ça fonctionne :
    Call IE.document.parentWindow.execScript("validModifEnigme(""56909"",""geracole"")", "JavaScript")

    Bien entendu, l'appel doit se faire avec des variables nociste et pseudo.
    Dans ce cas, je n'arrive pas à coder l'appel de la fonction pour passer nociste et pseudo en variables.
    Call IE.document.parentWindow.execScript("validModifEnigme(""nociste"",""pseudo"")", "JavaScript")
    Call IE.document.parentWindow.execScript("validModifEnigme("nociste","pseudo")", "JavaScript")
    Echec aussi en utilisant des concaténations
    Call IE.document.parentWindow.execScript("validModifEnigme(" & Chr(34) & Chr(34) & noCiste & Chr(34) & Chr(34) & "," _
    & Chr(34) & Chr(34) & Pseudo & Chr(34) & Chr(34) & ")" & Chr(34) & "," _
    & Chr(34) & "JavaScript" & Chr(34))

    Le sujet de ce post est de savoir comment coder cet appel.
    Merci de t'être intéressé à ce sujet.
    S'il t'est indispensable d'avoir mon mot de passe pour faire un test en réel, je pourrais te l'envoyer en message personnel.
    A+

    ci-dessous le code html de la page
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<title>Données Personnelles</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	<link href="css/cistes.css" rel="stylesheet" type="text/css">
        <link rel="alternate" type="application/rss+xml" title="Flux RSS des cacheurs de Cistes" href="https://www.cistes.net/rss/cacheur.php?xc=58975" />
    <script language="JavaScript">
    function validModifEnigme(id, idcisteur) {
    	document.modifEnigme.action='infosmodifierenig.php';
    	document.modifEnigme.id.value=id;
    	document.modifEnigme.idcisteur.value=idcisteur;
    	document.modifEnigme.submit();
    }
    </script>
    </head>
    <body>
    <form action="infos.php" name="modifEtat" method="post">
    	<input type="hidden" name="vaction" value="2">
    	<input type="hidden" name="idciste" value="">
    	<input type="hidden" name="etat" value="">
    	<input type="hidden" name="rt" value="c">
    </form>
    <center>
    <table width="737" border="0" cellpadding="0" cellspacing="0">
    <tr><td><style type="text/css">
    <!--
    .style1 {
    	font-family: Arial, Helvetica, sans-serif;
    	font-size:12px;
    	color: #8C8C8C;
    	text-decoration:none;
    }
    -->
    </style>
     
    <a href="https://www.cistes.net"><img src="images/fr/navigation/rappel.jpg" width="737" height="98" alt="cistes.net" border="0"></a>
    </td></tr>
    <tr> 
    <td bordercolor="#000000" marginwidth="5" leftmargin="5" rightmargin="5">
    	<div class="message"></div>
    	<div class="bloc">
    		<div align="center">
    			<form name="changePage" action="infoscistesc.php">
    				<table align="center">
    					<tr>
    						<td><a href="infoscistesc.php?num=100&st=&zc=&o="><img src="images/fr/navigation/prec.jpg" border=0></a></td>
    						<td align="center"><a href="infos.php" onFocus="blur()"><img src="images/fr/navigation/retour.gif" border="0" width="101" height="38"></a></td>
    						<td><a href="infoscistesc.php?num=-100&st=&zc=&o="></a></td>
    					</tr>
    										<tr valign="middle">
    						<td class="cell" colspan="3" align="center" valign="middle">
    							<input type="hidden" name="st" value="">
    							<input type="hidden" name="zc" value="">
    							<input type="hidden" name="o" value="">
    							Allez à la page : <select name="num" OnChange="Javascript:changePage.submit();">
    															<option value="0" selected>1</value>
    															<option value="100" >2</value>
    															<option value="200" >3</value>
    															<option value="300" >4</value>
    															<option value="400" >5</value>
    															<option value="500" >6</value>
    															<option value="600" >7</value>
    															<option value="700" >8</value>
    															<option value="800" >9</value>
    															<option value="900" >10</value>
    														</select> / 10						</td>
    					</tr>
    									</table>
    			</form>
    		</div>
     
    		<form name="modifEnigme" action="infosmodifierenig.php" method="post">
    		<input type="hidden" name="id" value="none">
    		<input type="hidden" name="idcisteur" value="none">
    		<input type="hidden" name="rt" value="c">
     
    		<span class="itemLabel">Liste des cistes que vous avez cachées :</span> <span class="message">951</span> <a href="rss/cacheur.php?xc=58975" target="_blank"><img src="images/common/feed.png" border="0"></a><BR><BR>
    		<table class="list" cellpadding="0" cellspacing="0">
    			<tr>
    				<th class="cellH" nowrap><a href="infoscistesc.php?st=1&zc=1&o=2">Ciste n&deg;</a></th>
    				<th class="cellH" nowrap><a href="infoscistesc.php?st=1&zc=2&o=2">Nom</a></th>
    				<th class="cellH"><a href="infoscistesc.php?st=1&zc=3&o=2">Date</a></th>
    				<th class="cellH">Nombre de trouveurs</th>
    				<th class="cellH"><a href="infoscistesc.php?st=1&zc=5&o=2">Statut</a></th>
    				<th class="cellH">Changer Statut</th>
    				<th class="cellH">Modifier la ciste</th>
    			</tr>
    							<tr>
    					<td class="cell">56909</td>
    					<td class="cell"><a href="choixciste.php?numero=56909" target="_blank">La maison de l'édile</a></td>
    					<td class="cell">09/05/2018</td>
    					<td class="cell">0</td>
    					<td class="cell" nowrap>Active, En Ligne</td>
    					<td class="cell" nowrap><a href="javascript:validChangeStatus(56909,1)"><img src="images/fr/infos/maybe.jpg" width="43" height="30" border="0" /></a> <a href="javascript:validChangeStatus(56909,2)"><img src="images/fr/infos/sure.jpg" width="43" height="30" border="0" /></a></td>
    					<td class="cell">
    						<a href="javascript:validModifEnigme('56909','58975')" onFocus="blur()">Enigme</a><BR>
    						<a href="javascript:validAddPicture('56909','58975')" onFocus="blur()">Photo</a>
    					</td>
    				</tr>

  6. #6
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut
    Petite avancée :
    Call IE.Document.parentWindow.execScript("validModifEnigme('56909','geracole')")
    fonctionne aussi.
    Mais pas mieux avec des variables.

  7. #7
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut Une solution
    Re,
    A force de tâtonner, d'essayer un peu tout, je suis arrivé à une solution qui fonctionne, sans savoir vraiment pourquoi.
    Il semble que 2 paramètres ne plaisent pas, alors je n'en ai mis qu'un, le 2ème doit être facultatif (?).
    IE.Document.parentWindow.execScript "validModifEnigme(" & nociste & ")", "JavaScript"
    Résultat, c'est ce que je voulais faire.
    Si vous voulez creuser, je suis preneur d'une explication.
    Merci de vous êtes penché sur mon cas.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    deja on a pas ton mot de passe ou login
    et 2end second si je comprends bien cette fonction n'existe pas dans le script d'origine du JS de la page c'est toi qui le créé c'est ca ?
    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

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call IE.document.parentWindow.execScript("validModifEnigme('" & nociste & "','" & pseudo & "')", "JavaScript")
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    deja on a pas ton mot de passe ou login
    et 2end second si je comprends bien cette fonction n'existe pas dans le script d'origine du JS de la page c'est toi qui le créé c'est ca ?
    Si le script existe; c'est la fonction validModifEnigme que tu peux voir dans le source html fourni.
    Mais mercatog vient de trouver la bonne syntaxe.
    Merci.

  11. #11
    Membre du Club
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call IE.document.parentWindow.execScript("validModifEnigme('" & nociste & "','" & pseudo & "')", "JavaScript")
    Oui, c'est ça !! Un mélange de simple et double quote !!
    Merci.

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

Discussions similaires

  1. Comment passer des paramètres VB6 à Crystal Report
    Par callo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/10/2006, 13h27
  2. [WebForms]Comment passer des paramètres à un UserControl ?
    Par cmoiscrat dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 03/08/2006, 15h03
  3. Comment passer des paramètre a OpenRecordset
    Par molarisapa dans le forum Access
    Réponses: 2
    Dernier message: 09/03/2006, 17h14
  4. Réponses: 7
    Dernier message: 30/12/2004, 12h01

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