Lancer une fonction sur une page web depuis VBA

Salut à tous,

Tout d'abord, désolé pour les imprécisions, je suis complètement autodidacte et je n'ai surement pas tout les termes précis. Je suis aussi susceptible de dire des grosses bêtises alors n'hésitez pas à me corriger.

J'ai une macro qui exécute des actions sur une page web:

Sub Sail2()

Dim ie      As Object
Dim frm     As Variant
Dim element As Variant
Dim datesail As String

Set ie = New InternetExplorerMedium

ie.navigate "http://pfrwtekref/websail/"

While ie.readyState <> 4: DoEvents: Wend

Set frm = ie.document.getElementByid("Form1")

   ie.Visible = True
   ie.document.getElementByid("Form1").elements("txtLogin").Value = ******
   ie.document.getElementByid("Form1").elements("txtPwd").Value = *****
   ie.document.getElementByid("Form1").elements("Button1").Click
   ie.navigate "http://pfrwtekref/websail/frmSuiviActivite2.aspx"

While ie.readyState <> 4: DoEvents: Wend

    ie.document.getElementByid("Form1").elements("DateDebut").Value = Format(Date, "dd/mm/yyyy")
    ie.document.getElementByid("Form1").elements("DateFin").Value = Format(Date, "dd/mm/yyyy")
    ie.document.getElementByid("Form1").elements("btn_Resultat").Click

End Sub

Au moment où je clique sur le bouton résultat j'ai un popup qui s'afficher me disant que je n'ai pas entré de date. Je me rends compte que les deux rectangles ne servent pas a entrer les données mais à les afficher, c'est juste des inputs box mais en read-only. Pour entrer les dates sans forcer avec VBA, je devrais cliquer sur les bouttons "choix" et choisir une date dans le calendrier qui s'affiche.

via VBA:

image

via clic sur bouton "choix":

image

Du coup je suppose qu'apres le clic sur le bouton choix, je dois avoir un événement qui se déclenche et qui "dit" au bouton résultat que c'est bon, les dates sont bien entrées.
J'ai inspecté mes deux codes (avant et apres l'affichage du calendrier) et effectivement j'ai une différence ici:
-Code avant le clic

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD><title>
    Suivi d'activité
</title><meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"><meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"><meta content="JavaScript" name="vs_defaultClientScript"><meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"><link href="styles.css" type="text/css" rel="stylesheet" /></HEAD>
    <body MS_POSITIONING="GridLayout">
        <form name="Form1" method="post" action="./frmSuiviActivite2.aspx" id="Form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNTMxMzIxNTY2D2QWAgIDD2QWAgISDzwrAAsAZGScOQoNqGNqyktNdNb5duOihHfSXDhXwJMIdrEy+WJPjQ==" />

<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="BC9C9B4F" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAfLmZQgUyFrp+RtWRcn8WdyGhTo+VLfEoiQDWerbcGjiKDfFJNoZm2vzKsM7PzPDpwulGLYm9lXIP2asThkLC1apobPVZ60uUnrD2vRXyjteTbfGbMKwn+GJo6LfUjoxo88T+xOKs2R9iIIXy/DTbdWjeFlT81n+dvcqoy+Mi28ir9R143smwIFKGM/CiVtiqM=" />
            <span id="Label1" style="font-weight:bold;Z-INDEX: 100; LEFT: 128px; POSITION: absolute; TOP: 144px">Date de début :</span>
            <input type="submit" name="btn_Quitter" value="Quitter" id="btn_Quitter" class="MyBoutonQuitter" style="width:121px;Z-INDEX: 112; LEFT: 720px; POSITION: absolute; TOP: 72px" /><span id="Label3" class="MyTitre" style="width:224px;Z-INDEX: 105; LEFT: 330px; POSITION: absolute; TOP: 60px">Suivi d'activité</span>
            <span id="Label2" style="font-weight:bold;Z-INDEX: 101; LEFT: 400px; POSITION: absolute; TOP: 144px">Date de fin :</span>
            <input name="DateDebut" type="text" readonly="readonly" id="DateDebut" style="Z-INDEX: 102; LEFT: 128px; POSITION: absolute; TOP: 168px" />
            <input name="DateFin" type="text" readonly="readonly" id="DateFin" style="Z-INDEX: 103; LEFT: 400px; POSITION: absolute; TOP: 168px" />
            <input type="submit" name="btn_ChoixDebut" value="Choix" id="btn_ChoixDebut" class="MyBoutonChoix" style="width:80px;Z-INDEX: 106; LEFT: 288px; POSITION: absolute; TOP: 168px" />
            <input type="submit" name="btnChoixFin" value="Choix" id="btnChoixFin" class="MyBoutonChoix" style="width:80px;Z-INDEX: 104; LEFT: 560px; POSITION: absolute; TOP: 168px" />

            <input type="submit" name="btn_Resultat" value="Resultat" id="btn_Resultat" class="MyBoutonResultat" style="Z-INDEX: 109; LEFT: 665px; POSITION: absolute; TOP: 168px" /></form>
    </body>
</HTML>

-Code apres l'affichage du calendrier

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD><title>
    Suivi d'activité
</title><meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"><meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"><meta content="JavaScript" name="vs_defaultClientScript"><meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"><link href="styles.css" type="text/css" rel="stylesheet" /></HEAD>
    <body MS_POSITIONING="GridLayout">
        <form name="Form1" method="post" action="./frmSuiviActivite2.aspx" id="Form1">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNTMxMzIxNTY2D2QWAgIDD2QWBAIHDzwrAAoBAA8WAh4HVmlzaWJsZWdkZAISDzwrAAsAZGQo+b6VGPdlaLrfd+6qWWHge+Ke74Fr3jjEbH6mfUec8w==" />

<script type="text/javascript">
<!--
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>

<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="BC9C9B4F" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdADOztrz0Gg6bn5+0Kl9l3uwKGhTo+VLfEoiQDWerbcGjiFoZONyZ6BSK3tMN8GplmUQxiPjZiofWtUlJULh4AdTbfRWuWAxRXzxvcKc1Zc+mOWOPZwnWqionmbDSbiZkc+tUfXxU9/wS+RPOpYtmV8nbw7Ukm0kQjVMZCc/YCgExUQjyuRl6qtGOIAF5EKoHRfSdEUb8hFuKHe+kl46W8n/9iwdjB2dhwgnbAsk79BDu6dAmNwyizE5+CDxjaKolTpybHan5sGI8vcqFHRtyO9j3idO9k97GrbFLq0lqy7I5uwJUg3LxVBnp0jTXUc25DpQeuA0BIkQiaSJuPN/LGglVcwRUWnjLpjUWdiF1zNiE3O+SdNDXv15A9LUvRj+6QYrkUpPqxC67c039+Yt45W2TxDM8a2vNFe+tTh79R+zb5vvPBcsBbCThBfE/C79ruLDg1DJ+DUWy+ZQLvnukpIOaysup67s2O21Yt2LIVvx+IdDifzoT1d4fbeB2FFWPB6bnMbGw/fFhCdJfgs+NlIi8DkBweRdZ5EDWNPGdenNqradH2x3djttuXeOQWc+tLPqTExYWHQVlWrqaqPaFWtfsFfqHHwWvHWtPuA9+ZqyRf6S9zC5vtwh3zJCMu+iJOopiRA3i0mbQsFn9282DbtCgVeSaFhfMGDeBRCiX1veTskxJug4XARY/xWT+UYuu+M0ul3Cpqboc3tndvQPF1sFh7Du9CPQxiANH/kg1nVCM9AkHKegiqd06oA8w0wl40V9HHMKejpwrqf0azqgpenAyS4Wg+W7v9c+zzudU8v8VIY3Y/+yR+sbxvUi4YcUvFzCEj0ki5TGsMyr6Ny70jbnaueoOTXWN05ii+YfOd7l5JoexTMqVgccCkpbAj3a2VZ31qbCIm6D3HkFCCC0W+015JiT75TYuRCmsL70MfigQZEEvJO8g6NZ0ZX3RU/vvtbmkDRPF7vgROkjGGwilflHioN8Uk2hmba/Mqwzs/M8OnC6UYtib2Vcg/ZqxOGQsLVqmhs9VnrS5SesPa9FfKO15Nt8ZswrCf4Ymjot9SOjGjzxP7E4qzZH2IghfL8NNt1bsWPsJqCXd08gjpdyjrcdCUr+5OJbuiSuKIdMC6u25DQ==" />
            <span id="Label1" style="font-weight:bold;Z-INDEX: 100; LEFT: 128px; POSITION: absolute; TOP: 144px">Date de début :</span>
            <input type="submit" name="btn_Quitter" value="Quitter" id="btn_Quitter" class="MyBoutonQuitter" style="width:121px;Z-INDEX: 112; LEFT: 720px; POSITION: absolute; TOP: 72px" /><span id="Label3" class="MyTitre" style="width:224px;Z-INDEX: 105; LEFT: 330px; POSITION: absolute; TOP: 60px">Suivi d'activité</span>
            <table id="Calendar1" tabindex="2" cellspacing="0" cellpadding="0" title="Calendar" bordercolor="#999999" border="0" style="width:208px;height:136px;font-size:8pt;font-family:Times New Roman;color:Black;border-width:1px;border-style:solid;border-color:#999999;background-color:White;border-collapse:collapse;Z-INDEX: 110; LEFT: 128px; POSITION: absolute; TOP: 200px">
    <tr><td colspan="7" style="background-color:Gold;border-color:Black;"><table cellspacing="0" border="0" style="color:Black;font-family:Times New Roman;font-size:8pt;font-weight:bold;width:100%;border-collapse:collapse;">
        <tr><td valign="bottom" style="width:15%;"><a href="javascript:__doPostBack('Calendar1','V7852')" style="color:Black" title="Go to the previous month"><</a></td><td align="center" style="width:70%;">août 2021</td><td align="right" valign="bottom" style="width:15%;"><a href="javascript:__doPostBack('Calendar1','V7914')" style="color:Black" title="Go to the next month">></a></td></tr>
    </table></td></tr><tr><th align="center" abbr="lundi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">l</th><th align="center" abbr="mardi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">m</th><th align="center" abbr="mercredi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">m</th><th align="center" abbr="jeudi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">j</th><th align="center" abbr="vendredi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">v</th><th align="center" abbr="samedi" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">s</th><th align="center" abbr="dimanche" scope="col" style="background-color:#CCCCCC;font-size:7pt;font-weight:bold;">d</th></tr><tr><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7877')" style="color:Gray" title="26 juillet">26</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7878')" style="color:Gray" title="27 juillet">27</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7879')" style="color:Gray" title="28 juillet">28</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7880')" style="color:Gray" title="29 juillet">29</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7881')" style="color:Gray" title="30 juillet">30</a></td><td align="center" style="color:Gray;background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7882')" style="color:Gray" title="31 juillet">31</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7883')" style="color:Black" title="1 août">1</a></td></tr><tr><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7884')" style="color:Black" title="2 août">2</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7885')" style="color:Black" title="3 août">3</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7886')" style="color:Black" title="4 août">4</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7887')" style="color:Black" title="5 août">5</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7888')" style="color:Black" title="6 août">6</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7889')" style="color:Black" title="7 août">7</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7890')" style="color:Black" title="8 août">8</a></td></tr><tr><td align="center" style="color:Black;background-color:#CCCCCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7891')" style="color:Black" title="9 août">9</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7892')" style="color:Black" title="10 août">10</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7893')" style="color:Black" title="11 août">11</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7894')" style="color:Black" title="12 août">12</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7895')" style="color:Black" title="13 août">13</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7896')" style="color:Black" title="14 août">14</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7897')" style="color:Black" title="15 août">15</a></td></tr><tr><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7898')" style="color:Black" title="16 août">16</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7899')" style="color:Black" title="17 août">17</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7900')" style="color:Black" title="18 août">18</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7901')" style="color:Black" title="19 août">19</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7902')" style="color:Black" title="20 août">20</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7903')" style="color:Black" title="21 août">21</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7904')" style="color:Black" title="22 août">22</a></td></tr><tr><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7905')" style="color:Black" title="23 août">23</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7906')" style="color:Black" title="24 août">24</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7907')" style="color:Black" title="25 août">25</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7908')" style="color:Black" title="26 août">26</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7909')" style="color:Black" title="27 août">27</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7910')" style="color:Black" title="28 août">28</a></td><td align="center" style="background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7911')" style="color:Black" title="29 août">29</a></td></tr><tr><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7912')" style="color:Black" title="30 août">30</a></td><td align="center" style="width:14%;"><a href="javascript:__doPostBack('Calendar1','7913')" style="color:Black" title="31 août">31</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7914')" style="color:Gray" title="1 septembre">1</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7915')" style="color:Gray" title="2 septembre">2</a></td><td align="center" style="color:Gray;width:14%;"><a href="javascript:__doPostBack('Calendar1','7916')" style="color:Gray" title="3 septembre">3</a></td><td align="center" style="color:Gray;background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7917')" style="color:Gray" title="4 septembre">4</a></td><td align="center" style="color:Gray;background-color:#FFFFCC;width:14%;"><a href="javascript:__doPostBack('Calendar1','7918')" style="color:Gray" title="5 septembre">5</a></td></tr>
</table><span id="Label2" style="font-weight:bold;Z-INDEX: 101; LEFT: 400px; POSITION: absolute; TOP: 144px">Date de fin :</span>
            <input name="DateDebut" type="text" readonly="readonly" id="DateDebut" style="Z-INDEX: 102; LEFT: 128px; POSITION: absolute; TOP: 168px" />
            <input name="DateFin" type="text" readonly="readonly" id="DateFin" style="Z-INDEX: 103; LEFT: 400px; POSITION: absolute; TOP: 168px" />
            <input type="submit" name="btn_ChoixDebut" value="Choix" id="btn_ChoixDebut" class="MyBoutonChoix" style="width:80px;Z-INDEX: 106; LEFT: 288px; POSITION: absolute; TOP: 168px" />
            <input type="submit" name="btnChoixFin" value="Choix" id="btnChoixFin" class="MyBoutonChoix" style="width:80px;Z-INDEX: 104; LEFT: 560px; POSITION: absolute; TOP: 168px" />

            <input type="submit" name="btn_Resultat" value="Resultat" id="btn_Resultat" class="MyBoutonResultat" style="Z-INDEX: 109; LEFT: 665px; POSITION: absolute; TOP: 168px" /></form>
    </body>
</HTML>

--- Désolée pour le pavé...

Du coup on voit bien l'apparition du code:

<script type="text/javascript">
<!--
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script

J'y connais rien encore une fois, mais je me dis que c'est cette fonction doPostBack qui doit envoyer les dates choisies.
En effet, si je regarde plus loin, au 30 juillet par exemple j'ai tout une ligne de code qui finit par:

href="javascript:__doPostBack('Calendar1','7882')"

Ce qui voudrait dire qu'on enverrai a la fonction doPostBack les arguments eventTarget='Calendar1' et eventArgument='7882' pour choisir la date de debut puis un eventTarget='Calendar2' et eventArgument='7883' pour choisir la date de fin (si je veux une plage 30/7/21 à 31/7/21)

Je dis peut etre une grosse bêtise, mais ça me semblerait logique.. Si c'est le cas j'aimerai bien trouver comment envoyer directement à cette fonction les jours que je veux sans avoir à cliquer dessus sur le calendrier. En gros garder les Calendar1 et Calendar2 en eventTarget mais choisir quoi envoyer en eventArgument.

Honnêtement ça me rend folle d'avoir pu creuser jusqu'ici mais d'être bloquée aussi proche de mon but alors si quelqu'un à une quelconque idée de comment faire ou si vous voulez de plus amples informations, je suis disponible

En tout les cas, merci de m'avoir lue et passez une bonne journée !

Bonjour,

En attendant que vous obteniez meilleure réponse, voici un code à essayer :

Sub Sail2()
Dim ie As Object, frm, element, otable, elem, datesail As String
Set ie = New InternetExplorerMedium
with ie
    .navigate "http://pfrwtekref/websail/"
    While .readyState <> 4: DoEvents: Wend
    Set frm = .document.getElementByid("Form1")
    .Visible = True
   with frm
        .elements("txtLogin").Value = ******
        .elements("txtPwd").Value = *****
        .elements("Button1").Click
    end with
   .navigate "http://pfrwtekref/websail/frmSuiviActivite2.aspx"
    While .readyState <> 4: DoEvents: Wend
    set otable = .document.getElementById("Calendar1").cells 'table des éléments du calendrier
    for each elem in otable 'pour chaque élément
        if elem.title = format(Date, "D MMMM") then 'si titre = aujourdhui
            elem.click 'click
            'elem.fireevent "onclick" 'si besoin pour déclencher la procédure réagissant à l'évènement click
            exit for 'sortie boucle
        end if
    next elem
    set otable = .document.getElementById("Calendar2").cells
    for each elem in otable
        if elem.title = format(Date + 1, "D MMMM") then 'demain
            elem.click
            'elem.fireevent "onclick" 'idem
            exit for
        end if
    next elem
    application.wait now + timevalue("00:00:01")
    .document.getElementByid("Form1").elements("btn_Resultat").Click
end with
End Sub

On essaie de cibler les tables contenues dans les formulaires calendrier.

On en parcourt chaque élément jusqu'à trouver correspondance avec la date voulue (celle du jour en l'occurrence) en testant la propriété .title de l'élément.

Une fois le bon élément trouvé, on clique dessus (lien hypertexte) et on demande éventuellement à déclencher les évènements (ligne elem.fireevents à activer).

Je ne m'y connais pas assez malheureusement mais ça permet d'avoir une idée des possibilités.

Surtout, inspectez bien la fenêtre de variables locales lors de chacun de vos essais, c'est très important.

Cdlt,

Salut 3GB,
Pas bête, j'y avais pas pensé du tout, j'ai essayé pour voir et bien évidement ça fonctionne pas du premier coup, y aurait des reglagles à faire mais ça pourrait fonctionner.

Par contre, bonne nouvelle, j'ai trouvé comment faire ! Et encore mieux, j'ai trouvé deux méthodes assez similaires mais les deux fonctionnent (presque tout le temps):
1ere methode: executer la fonction java en passant les deux arguments de vba à java

Sub Sail2()

Dim ie   As Object
Set ie = New InternetExplorerMedium
Dim datesail As Long

datesail = Application.WorksheetFunction.WorkDay(Date, -1) - 36526
ie.navigate "http://pfrwtekref/websail/"

While ie.readyState <> 4: DoEvents: Wend

Set frm = ie.document.getElementByid("Form1")

   ie.Visible = True
   ie.document.getElementByid("Form1").elements("txtLogin").Value = *****
   ie.document.getElementByid("Form1").elements("txtPwd").Value = ***
   ie.document.getElementByid("Form1").elements("Button1").Click
While ie.readyState <> 4: DoEvents: Wend
   ie.navigate "http://pfrwtekref/websail/frmSuiviActivite2.aspx"

While ie.readyState <> 4: DoEvents: Wend
    ie.document.getElementByid("Form1").elements("btn_ChoixDebut").Click
Application.Wait Now + TimeValue("0:00:01")
    ie.document.getElementByid("Form1").elements("btnChoixFin").Click
While ie.readyState <> 4: DoEvents: Wend
    Set currentWindow = ie.document.parentWindow
Application.Wait Now + TimeValue("0:00:01")
    currentWindow.execScript ("__doPostBack('Calendar1','" & datesail & "')")
Application.Wait Now + TimeValue("0:00:01")
    currentWindow.execScript ("__doPostBack('Calendar2','" & datesail & "')")

End Sub

2eme méthode: La fonction java donne juste les valeurs d'eventtarget et d'eventargument puis "submit" le formulaire, je peux donc juste faire ces actions directement via vba sans avoir a passer par la fonction java:

Sub Sail3()

Dim ie   As Object
Set ie = New InternetExplorerMedium
Dim datesail As Long
datesail = Application.WorksheetFunction.WorkDay(Date, -1) - 36526
ie.navigate "http://pfrwtekref/websail/"

While ie.readyState <> 4: DoEvents: Wend

Set frm = ie.document.getElementByid("Form1")
   ie.Visible = True
   ie.document.getElementByid("Form1").elements("txtLogin").Value = 139510
   ie.document.getElementByid("Form1").elements("txtPwd").Value = 1
   ie.document.getElementByid("Form1").elements("Button1").Click
While ie.readyState <> 4: DoEvents: Wend
   ie.navigate "http://pfrwtekref/websail/frmSuiviActivite2.aspx"
While ie.readyState <> 4: DoEvents: Wend
    ie.document.getElementByid("Form1").elements("btn_ChoixDebut").Click
Application.Wait Now + TimeValue("0:00:01")
    ie.document.getElementByid("Form1").elements("btnChoixFin").Click
Application.Wait Now + TimeValue("0:00:01")
ie.document.getElementByid("Form1").elements("__EVENTTARGET").Value = "Calendar1"
ie.document.getElementByid("Form1").elements("__EVENTARGUMENT").Value = datesail
ie.document.getElementByid("Form1").submit
Application.Wait Now + TimeValue("0:00:01")
ie.document.getElementByid("Form1").elements("__EVENTTARGET").Value = "Calendar2"
ie.document.getElementByid("Form1").elements("__EVENTARGUMENT").Value = datesail
ie.document.getElementByid("Form1").submit
End Sub

Seul probleme c'est que j'ai souvent l'erreur:

image

Faut juste que je resolve ce probleme et tout sera bon ! Merci pour ta participation quand meme 3GB, t'as été le seul à vouloir se mouiller :p

Ah super ! Bravo à toi !

Je pense que cette première méthode est la meilleure. Ce qui est troublant, c'est la petite soustraction à faire pour obtenir la bonne date mais sinon c'est très simple.

Pour la seconde, j'avais pensé à quelque chose comme ça mais je n'étais pas sûr que ça puisse marcher, ne connaissant presque pas html et js, et ayant vu l'attribut readonly.

En tout cas, merci beaucoup d'être revenue avec la/les solution(s), j'utiliserai sûrement la première dans un de mes projets !

Bonne continuation et bon courage pour la suite de ton programme !

Rechercher des sujets similaires à "lancer fonction page web vba"