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

VBA Access Discussion :

Importer un fichier excel généré par une application intranet


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut Importer un fichier excel généré par une application intranet
    Bonjour à tous,

    Je souhaite importer les données d'un site web intranet (2 fois / jours) dans une base access.
    Le fichier généré par l'appli web intranet est simple à récupérer cliquer un bouton puis cela me génère le fichier excel : id="REQUETE_NOM" name="REQUETE_ID" value='EXPORT' mon souhait piloté depuis access

    Mon problème c'est que je n'arrive pas à récupérer le fichier, à partir de mon code en VBA. J'arrive à ouvrir l'intranet me connecter mais le reste

    Grâce à cet exemple ci-dessous j'arrive à me connecter OK le reste sa marche pas ( pourtant il y a juste à déclencher qq chose pour récupérer le fichier dans ma table).

    Merci de vos lumières.

    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
    Option Compare Database
     
    Sub connexion()
     
        Dim IE As InternetExplorer
        Dim IEdoc As Object
        Dim DOCelement As Object
     
        Set IE = New InternetExplorer
        IE.Visible = True
        IE.navigate ("http://www.lesite.com/")
     
         ' attente de fin de chargement
        Do Until IE.readyState = 4
            DoEvents
        Loop
     
        Set IEdoc = IE.Document
     
        'login
         Set DOCelement = IEdoc.getElementsByName("*").Item
         DOCelement.Value = ""
     
        'password
         Set DOCelement = IEdoc.getElementsByName("").Item
         DOCelement.Value = ""
         DOCelement.Select
     
        'connexion
         Set DOCelement = IEdoc.Forms(0)
         DOCelement.submit
     
         Do Until IE.readyState = 3
            DoEvents
        Loop
     
        IE.navigate "http://www.lesite.com/remository/startdown/1313.html"
     
         Do Until IE.readyState = 4
            DoEvents
        Loop
     
        IE.Document.Forms(1).submit
     
        'IE.Document.all("Exporter tout vers excel").Click   
     
         'IE.navigate "http://xxxxxxxxxxxxxxx/adv/xls_pdv_agree.php"
         'IE.Visible = True
     
     End Sub
    Voici un autre exemple que je pourrais adapter à mon cas, sauf que pour moi se serait d'importer le fichier mise à disposition sur le site ver ma table.



    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
    Function ImportXmlEurofXref()
    ' utilise ref VBA : Microsoft XML, version 2 ...\system32\msxml.dll
    Dim xmlDoc As MSXML.DOMDocument, xmlCube As MSXML.IXMLDOMNode, xmlNode As MSXML.IXMLDOMNode
    Dim db As DAO.Database, rXrates As DAO.Recordset
    Dim strCur As String, strRate As String, curRate As Currency
    Dim strDecCar As String, strThCar As String, strTstFmt As String
     
    strTstFmt = Format(1234.5678, "#,##0.0000")
    If Len(strTstFmt) = 10 Then
       strThCar = Mid(strTstFmt, 2, 1)
    Else
       strThCar = ""
    End If
    strDecCar = Mid(strTstFmt, Len(strTstFmt) - 4, 1)
     
    Set xmlDoc = New MSXML.DOMDocument
    ' Charge fichier xml
    xmlDoc.Load "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"
     
    ' Attendre que le document soit interprété
    While (xmlDoc.parsed = False)
        DoEvents
    Wend
     
    ' Format fichier xml :
    ' ---------------------------------------------------
    '   <Cube>
    '       <Cube time="2009-03-05">
    '           <Cube currency="USD" rate="1.2555"/>
    '           ....
    '           <Cube currency="ZAR" rate="13.2079"/>
    '       </Cube>
    '   </Cube>
     
    ' Obtenir premier élément "Cube" dans le document
    Set xmlCube = xmlDoc.documentElement.SelectSingleNode("Cube")
     
    ' Elément "Cube" de niveau inférieur
    Set xmlCube = xmlCube.SelectSingleNode("Cube")
     
    Set db = CurrentDb
    Set rXrates = db.OpenRecordset("Xrates", dbOpenDynaset)
     
    ' Boucler sur les noeuds inférieurs (<Cube currency="CCC" rate="n.nnnn"/>)
    '  et récupérer les attributs "currency" et "rate".
    '  Le taux est EUR/DEVISE (1 EUR = n.nnnn CCC)
    For Each xmlNode In xmlCube.ChildNodes
        strCur = xmlNode.Attributes.getNamedItem("currency").NodeValue
        strRate = xmlNode.Attributes.getNamedItem("rate").NodeValue
        strRate = Replace(strRate, ".", strDecCar)
        curRate = CCur(strRate)
     
        'Debug.Print "1 EUR = " & curRate & " " & strCur, strRate
     
        ' Rechercher la devise dans la table et la mettre à jour
        rXrates.FindFirst "Devise=""" & strCur & """"
        If Not rXrates.NoMatch And curRate <> 0 Then
           rXrates.Edit
           rXrates("EUR2DEV") = curRate
           rXrates.Update
        End If
     
    Next
     
    ENDP:
    rXrates.Close
    db.Close
     
    Set xmlCube = Nothing
    Set xmlDoc = Nothing
     
    End Function

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Si tu ne l'as pas déjà vu, je te conseille le tutoriel Interaction avec Internet Explorer via VBA Excel.
    Il est valable aussi pour toutes application VBA.

    Il est difficile de répondre à ton problème, car la réponse dépend de la façon dont la page web est construite.

    L'idéal pour télécharger simplement un fichier est d'avoir une url.
    Quelques fois on peut arriver à déterminer une url avec des paramètres du style
    http://www.lenomdusite.fr/niv1/niv2/lapage.html?param1=valeur1&param2=valeur ce qui facilite travail.
    On peut alors utiliser winHttp.

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Bonjour, oui j'ai l'url pour arriver directement sur la page sur laquelle je dois faire mon export 2 à 3 fais / jours, mais cependant la problématique se situe au niveau de mon code vba

    1-/ je n'ai pas trouver l'astuce VBA qui permet de déclencher l'action export

    Exemple pour capiltaliser des données :
    IE.Document.all("...").Value = "..."

    La fonction ci-dessous fonction dans mon cas permet de sauvegarder les données saisies mais pour simplement déclencher l'export je ne connais pas de procédure vba.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IE.Navigate2"javascript:vccaction('display=actions&action=save);"
    2-/ MSXML2 je ne le trouve pas dans ma bibli il y a que 3 et cela ne fonctionne pas

    Merci pour votre aide car je rame merci les pro

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Est-ce que tu pourrai naviguer jusqu'à la page qui contient le bouton, sauvegarder cette page avec ton navigateur (en .html), puis poster le fichier ?

    Dans le code html de cette page sais-tu dire où est le bouton ?

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Oui, je sais aller voir le code html, il y a 8 pages j’ai filtrer au mieux pour les étapes qui nous concernent et retrouver le ‘’name’’ du bouton ou liste déroulante.

    Alors voici le résumé pour chaque étape :
    Connexion à l’Url en passant par le code de connexion : LOG + PASS sa OK
    Navigation jusqu'à la page qui contient le bouton -->
    Url = « http://siteitranet....

    Etape 1-/ Pour sélectionner la requête : voici le name="REQUETE_ID" value="Export_C choix dans la liste déroulante,
    Parmi les autres existantes ci-dessous code HTML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    </form> 
    <div id="vccMenu"><div class="vccMenuBlock"><div class="vccMenuHelp"> 
    <a href="#" onclick="javascript:window.open('aide/aide.php?PHPSESSID=3
    Nom de la requête : <input type="text" id="REQUETE_NOM" name="REQUETE_ID" value="Export_C"/></span><div class="spacer"></div></div><div class="vccMenuItem"><a
    Etape 2-/ Pour lancer le calcul il faut cliquer sur le bouton ‘’CHERCHER’’ (dans ce cas je dois cliquer sur un bouton mais je n’ai pas le nom EN HTML ?? j’ai seulement en indication suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTML <button class=’’x-btn-text’’ type=’’submit’’ id=’’ext-gen932’’>CHERCHER
    Etape 3-/une fois le calcul fait par le biais CHERCHER, tps en moyenne 20 secondes, je dois sélectionner parmi une liste déroulante l’export nomé Export_C pour avoir le fameux fichier excel.
    j’ai seulement en indication suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTML <div class =’’x-combo-list-item’’ x-combo-selected’’>export orienté
    Merci pour votre aide

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    1. Sélectionner liste
    Quand une balise a un id on peut utiliser GetElementById.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set DOCelement = IEdoc.getElementById("REQUETE_NOM")
        DOCelement.value = "qqchose"
    2. Le bouton a pour id ext-gen932

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set DOCelement = IEdoc.getElementById("ext-gen932")
        DOCelement.click
    3. choix dans liste.
    Le code que tu as mis n'est pas complet ou alors le code de la liste ne fait pas partie du code de la page.
    La balise que je connais pour une liste html est <select></select>

    A+

    ci dessous un exemple, si ça peut aider.
    (références VB : "Microsoft Internet Controls" et "Microsoft HTML Object Library")
    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
    101
    102
    103
    104
    105
    106
    107
    108
    Sub subIE01()
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
    Dim oHElt As MSHTML.IHTMLElement        ' Elément html de base
    Dim oHChildElt As MSHTML.IHTMLElement   ' Elément html de base
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
     
    Set IE = New SHDocVw.InternetExplorer
    IE.Visible = True
    IE.navigate "http://sdw.ecb.europa.eu/browse.do?node=2018795"
     
    ' On attend que IE soit dans l'état READYSTATE_COMPLETE et que Busy = False
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
    ' Liste id="fl1"
    Set oHElt = oHDoc.getElementById("fl1")
    ' Arrêter si pas trouvée
    If oHElt Is Nothing Then
       MsgBox "Liste fl1", vbExclamation, "Elément non trouvé"
       Exit Sub
    End If
    ' faire la sélection
    For Each oHChildElt In oHElt.Children
        If oHChildElt.Value = "A" Then
           oHChildElt.Selected = True
        Else
           oHChildElt.Selected = False
        End If
    Next
    ' déclencher l'événement onchange de la liste
    oHElt.FireEvent "onchange"
    ' on attend que IE ait fini de charger/rafraichir la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
     
    ' liste id="fl3"
    Set oHElt = oHDoc.getElementById("fl3")
    ' Arrêter si pas trouvée
    If oHElt Is Nothing Then
       MsgBox "Liste fl3", vbExclamation, "Elément non trouvé"
       Exit Sub
    End If
    ' Faire la sélection
    For Each oHChildElt In oHElt.Children
        If oHChildElt.Value = "Z64" Then
           oHChildElt.Selected = True
        Else
           oHChildElt.Selected = False
        End If
    Next
    ' déclencher l'événement onchange de la liste
    oHElt.FireEvent "onchange"
    ' on attend que IE ait fini de charger/rafraichir la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
     
    ' Liste id="fl4"
    Set oHElt = oHDoc.getElementById("fl4")
    ' Arrêter si pas trouvée
    If oHElt Is Nothing Then
       MsgBox "Liste fl4", vbExclamation, "Elément non trouvé"
       Exit Sub
    End If
    ' Faire la sélection
    For Each oHChildElt In oHElt.Children
        If oHChildElt.Value = "EUR" Then
           oHChildElt.Selected = True
        Else
           oHChildElt.Selected = False
        End If
    Next
    ' déclencher l'événement onchange de la liste
    oHElt.FireEvent "onchange"
    ' on attend que IE ait fini de charger/rafraichir la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
    ' Le bouton Exporter affiche une section <div> dont l'id est "exportOptions"
    ' On va chercher l'id puis parcourir les liens hypertextes à la rechercher de "Excel (csv)"
    Set oHElt = oHDoc.getElementById("exportOptions")
    ' Arrêter si pas trouvé
    If oHElt Is Nothing Then
       MsgBox "div id=exportOptions", vbExclamation, "Elément non trouvé"
       Exit Sub
    End If
    For Each oLink In oHElt.getElementsByTagName("a")
        If oLink.innerText = "Excel (csv)" Then
           oLink.Click
           Exit For
        End If
    Next
     
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Merci j'y vois plus clair vous avez bien identifié la problématique
    le procédure "GetElementById" me parait plus adapté.

    (Pour le point 3 --> c'est une sorte de bouton popup rectangulaire qui notifie et demande :"voulez-vous ouvrir le fichier ?" se serait bien de cette étape envoyer dans un répertoire ou table.)


    Cela rejoint complètement la méthode que je voudrais adapté car derrière je vais mettre l'export .csv généré par l'application intranet soit dans une table ou dans un répertoire dans C: à bientôt

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Debutant10 Voir le message
    (Pour le point 3 --> c'est une sorte de bouton popup rectangulaire qui notifie et demande :"voulez-vous ouvrir le fichier ?" se serait bien de cette étape envoyer dans un répertoire ou table.)
    Sans savoir précisément ce que c'est comme bouton, ça va être compliqué

    Si tu fais une recherche sur "voulez-vous ouvrir le fichier" dans le code html de la page, au moment où tu as le bouton, est-ce que tu trouve le texte ?
    Si oui, dans quelle balises se trouve-t-il ?

    Par exemple ci-dessous, j'ai un bouton "Connexion" (en tout cas ça a l'apparence d'un bouton),
    qui s'avère en fait être un lien hypertexte (balise <a></a>):
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <li class="gbt">
    <a target="_top" href="https://accounts.google.com/ServiceLogin?hl=fr&amp;continue=http://www.google.com/webhp%3Fhl%3Dfr"
        onclick="gbar.logger.il(9,{l:'i'})" id="gb_70" class="gbgt">
    <span class="gbgs"><span class="gbit">Connexion</span></span>
    </a>
    </li>

    A+

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Si le message qui apparaît est un msgbox (fenêtre Windows + bouton(s)), il sera difficile voir impossible de faire ce que tu souhaites car le message bloque l’exécution du code VBA pour attendre l'action de l'utilisateur. Il y a des post similaire sur le forum avec ce style de problème.

    Peux tu faire une capture d'écran pour essayer de mieux appréhender ce sur quoi tu travailles?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Bonjour à tous

    Le tps que je fasse la capture d'écran sur l'appli intranet,

    qq peut-il me corriger s'il y a des erreurs dans ce que j'ai codé grâce au très bon exemple de LedZeppII pour l'adapter à mon besoin. Merci

    Rappel sur ma méthode pour extraire le fichier excel :
    Etape 1-/ Pour sélectionner la requête : voici le name="REQUETE_ID "value="Export_C choix dans la liste déroulante,
    Etape 2-/ cliquer sur le bouton ‘’CHERCHER’’
    Etape 3-/une fois le calcul fait par le biais CHERCHER, tps en moyenne 20 secondes, je dois sélectionner parmi une liste déroulante l’export nomé
    Etape 4-/ Selectionner dans la liste déroulante Export_C pour avoir le fameux fichier excel.


    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
    Sub subIE01()
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
    Dim oHElt As MSHTML.IHTMLElement        ' Elément html de base
    Dim oHChildElt As MSHTML.IHTMLElement   ' Elément html de base
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
     
    Set IE = New SHDocVw.InternetExplorer
    'Set IE = CreateObject("InternetExplorer.Application")pour capiltaliser
    IE.Visible = True
    IE.navigate "mon site"
     
    ' On attend que IE soit dans l'état READYSTATE_COMPLETE et que Busy = False
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
     
     
    ''************* 1-/ Ma 1er étape une fois connécté 1-/la sélection de ma requête dans ma page'*********************************************************
    'id ="REQUETE_NOM" name="REQUETE_ID"  value ="Export_c"
    Set oHElt = oHDoc.getElementById("REQUETE_NOM")
    ' Arrêter si pas trouvée
    If oHElt Is Nothing Then
       MsgBox "Requête non trouvée", vbExclamation, "Elément non trouvé"
       Exit Sub
    End If
    ' faire la sélection de la requête sur la page de l'url
    For Each oHChildElt In oHElt.Children
        If oHChildElt.Value = "Export_c" Then
           oHChildElt.Selected = True
        Else
           oHChildElt.Selected = False
        End If '*********************************************************
    Next
    ' déclencher l'événement onchange de la liste
    oHElt.FireEvent "onchange"
    ' on attend que IE ait fini de charger/rafraichir la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
     '************* 2-/ Etape N°2 cliquer sur le bouton rechercher  id="ext-gen932"  '*************
    Set oHElt = oHDoc.getElementById("ext-gen932")
    'ou faut-il utiliser cette méthode ?
     'ie.document.all ("ext-gen932"). Cliquez
    ' Arrêter si pas trouvée
    If oHElt Is Nothing Then
       MsgBox "Chercher", vbExclamation, "Elément non trouvé"
       Exit Sub '********************************************************************
    End If
     
    Next
    ' déclencher l'événement onchange de la liste
    oHElt.FireEvent "onchange"
    ' on attend que IE ait fini de charger/rafraichir la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
      '********3 ème étape**********************************
    ' La liste déroulante Exporter affiche une section <div> dont l'id est "ext-gen1980"
    ' l'id puis parcourir les liens hypertextes à la recherche de "Excel (csv)"
    Set oHElt = oHDoc.getElementById("ext-gen1980")
    ' Arrêter si pas trouvé
    If oHElt Is Nothing Then
       MsgBox "div id=ext-gen1980", vbExclamation, "Elément non trouvé"
       Exit Sub '********************************************************************
    End If
     
    '********4 ème étape Exporter le fichier excel dans mes documents******
    For Each oLink In oHElt.getElementsByTagName("Export_c") ' Lien html (<a></a>)
        If oLink.innerText = "Excel (csv)" Then
           oLink.Click
           Exit For
        End If
    Next
     
    End Sub '********************************************************************

  11. #11
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Debutant10 Voir le message
    qq peut-il me corriger s'il y a des erreurs dans ce que j'ai codé grâce au très bon exemple de LedZeppII pour l'adapter à mon besoin.
    A première vue, je doute que ton code puisse fonctionner.
    Il ressemble trop à mon exemple.
    Chaque page web est un cas particulier, pour laquelle il faut un code VBA différent.
    Je dirai qu'il est presque impossible de valider ton code, sans avoir accès à la page web que tu utilises.

    Le but de mon code exemple était que tu regardes les solutions que j'avais choisies, par rapport au code html/javascript de la page.

    Ce que je te conseilles, c'est de coder/tester les étapes, une par une.
    Ce n'est pas la peine de chercher à coder l'étape 3, si tu n'arrive pas à coder l'étape 1.

    Dis nous, jusqu'où ça fonctionne, et sur quel point tu bloques.

    A+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Très bonne idée LEDZEPP je vais faire étape par étape
    Les étapes, une par une : je viens de tester manuellement pour l’étape 1 se serait se connecter directement sur la page pour lancer la requête ="Export"
    Ce qui fonctionne : c’est lorsque je le faite manuellement démarrer avec l’adresse PHPSESSID… dans la barre des tâches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "><ahref="index.php?PHPSESSID=ghs0pq923fnrp1&amp;obj=rech_avancee2&amp;CTRE_ID=90&amp;REQUETE_ID=12125"
    Ce qui fonctionne pas : c’est de le faire depuis VBA mon souhait
    Pour cela j’ai le PHPSESSID…… mais ne sait pas comment l’intégrer dans mon code vba ?
    Es-ce la même déclaration que le lien hypertexte ?
    Voici le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ></a></div><div class="vccMenuItem"><ahref="index.php?PHPSESSID=ghs0pq923fnrp1&amp;obj=rech_avancee2&amp;CTRE_ID=90&amp;REQUETE_ID=12125">Export</a>
    Etape 2-/ cliquer sur le bouton ‘’CHERCHER’’
    Ce qui fonctionne pas : c’est de faire la le clique
    Mon souhait le faire depuis VBA
    Pour cela voici le code Html de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="submit" id="ext-gen932">Chercher </button></em></td><td class="x-btn-right"><i>&nbsp;</i></td>
    Merci de votre aide pour les 2 étapes avant de continuer la suite.

    le But pouvoir faire cela depuis VBA apparemment c possible merci les PRO

  13. #13
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Si ton code source de page ne contient pas de données sensibles, il serait bien de mettre l'intégralité de la page, déjà sans la page sous les yeux, il n'est pas facil de répondre, mais avec juste quelques bribes de code source, ça devient hasardeux.
    Le "bouton" dont tu parles est de type submit, regarde dans le tutoriel j'en parle.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Bonjour les données de la pages HTML fait 86 pages word, donc j'ai sélectionné le début et le bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Site….</title>
    <link rel="shortcut icon" href="favicon.ico">
    <link rel="stylesheet" type="text/css" media="all" href="lib/min/index.php?g=cssIR&amp;1339" title="site nom">
    <script type="text/javascript" src="min.php/js?1327486"></script><style type="text/css">.tabber{display:none;}</style>
    <script type="text/javascript">Ext.BLANK_IMAGE_URL = 'lib/ext-2.2/resources/images/default/s.gif';</script>
    </head>
    <body class="  ext-chrome " id="ext-gen9">
    <div id="page_top"><img id="image_logo_SITE NOM" src="images/pix.gif" class="sprite-bdeau sprite-bdeau_logo" alt="SITE NOM"><img id="image_logo_SITE NOM fonction" src="images/logo" alt="">
    <!-- Menu -->
    <div id="menu_SITE NOM_top"><table cellspacing="0" cellpadding="0"><tbody><tr><td><div style="white-space: nowrap;"><img src="images/pix.gif" alt="" class="sprite-bdeau sprite-bdeau_arrondi"></div></td><td><div onmouseover="javascript:vccShowPopWin('14', 1, '15', 5, 1 );" onclick="javascript: bHideWin=false;" style="white-space: nowrap;"><img src="images/pix.gif" alt="" class="sprite-bdeau sprite-bdeau_recherche"></div><div id="vccPos15"></div></td><td><div onmouseover="javascript:vccShowPopWin('17', 1, '18', 5, 1 );" onclick="javascript: bHideWin=false;" style="white-space: nowrap;"><img src="images/pix.gif" alt="" class="sprite-bdeau sprite-bdeau_aires"></div><div id="vccPos18"></div></td><td><div class="fond_bleu_f" onmouseover="javascript:vccShowPopWin('20', 1, '21', -55, 1 );" onclick="javascript: bHideWin=false;" style="white-space: nowrap; width:105px;"><img src="images/pix.gif" alt="" class="sprite-bdeau sprite-bdeau_portails"></div><div id="vccPos21"></div></td><td><div style="white-space: nowrap; width:5px;"><img src="images/pix.gif" alt="" class="sprite-bdeau sprite-bdeau_arrondi02"></div></td></tr></tbody></table></div>
    <!-- Fin Menu SITE NOM -->
       <span id="span_top_name">Utilisateur<br>mail </span>
    Partie qui concerne le bouton à actionner --> "chercher"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="submit" id="ext-gen932">Chercher </button></em></td><td class="x-btn-right"><i>&nbsp;</i></td>
    merci pour votre aide

  15. #15
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Citation Envoyé par Debutant10 Voir le message
    l’étape 1 se serait se connecter directement sur la page pour lancer la requête ="Export"[/B]
    Ce qui fonctionne : c’est lorsque je le faite manuellement démarrer avec l’adresse PHPSESSID… dans la barre des tâches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "><ahref="index.php?PHPSESSID=ghs0pq923fnrp1&amp;obj=rech_avancee2&amp;CTRE_ID=90&amp;REQUETE_ID=12125"
    Ce qui fonctionne pas : c’est de le faire depuis VBA mon souhait
    Pour cela j’ai le PHPSESSID…… mais ne sait pas comment l’intégrer dans mon code vba ?
    Es-ce la même déclaration que le lien hypertexte ?
    Voici le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ></a></div><div class="vccMenuItem"><ahref="index.php?PHPSESSID=ghs0pq923fnrp1&amp;obj=rech_avancee2&amp;CTRE_ID=90&amp;REQUETE_ID=12125">Export</a>
    Voila ce que tu peux essayer.
    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
    ' Rercher lien "Export" dont la cible est
    ' comme "*index.php?PHPSESSID=*REQUETE_ID=12125"
    bTrouve = False
    For Each oLink In oHDoc.getElementsByTagName("a")
        If oLink.href Like "*index.php?PHPSESSID=*REQUETE_ID=12125" Then
           bTrouve = True
           Exit For
        End If
    Next
     
    If bTrouve = False
       MsgBox "Le lien 'Export' n'a pas été trouvé"
       Exit Sub
    End If
     
    ' On clique sur le lien
    oLink.Click
    ' On attend que la nouvelle pas soit chargée
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la nouvelle page
    Set oHDoc = IE.Document
    Définition des variables utilisées ci-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
     
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
    Dim bTrouve As Boolean
    Avec If oLink.href Like "*index.php?PHPSESSID=*REQUETE_ID=12125" je recherche un lien dont la cible
    contient "index.php?PHPSESSID=" et finit par REQUETE_ID=12125.

    A+

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Je suis un peu perdu pour faire mon test :

    est-ce correct ci dessous, qui peu me corriger svp ?
    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
     
     
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
     
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
    Dim bTrouve As Boolean
     
     
     
    ' Rercher lien "Export" dont la cible est
    ' comme "*index.php?PHPSESSID=*REQUETE_ID=12125"
    bTrouve = False
    For Each oLink In oHDoc.getElementsByTagName("a")
        If oLink.href Like "*index.php?PHPSESSID=*REQUETE_ID=12125" Then
           bTrouve = True
           Exit For
        End If
    Next
     
    If bTrouve = False
       MsgBox "Le lien 'Export' n'a pas été trouvé"
       Exit Sub
    End If
     
    ' On clique sur le lien
    oLink.Click
    ' On attend que la nouvelle pas soit chargée
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la nouvelle page
    Set oHDoc = IE.Document
     
    end Sub

  17. #17
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Il te manques le code d'ouverture de la page de départ entre les lignes 7 et 11.
    J'ai inséré les lignes 7 à 17

    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
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
     
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
    Dim bTrouve As Boolean
     
    ' Création du navigateur
     Set IE = New SHDocVw.InternetExplorer
    IE.Visible = True
    ' Ouverture de la page web
    IE.navigate "___url____"    ' ### remplacer ___url____ par l'adresse de la page web ###
    ' On attend que IE soit dans l'état READYSTATE_COMPLETE et que Busy = False
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
    ' Rercher lien "Export" dont la cible est
    ' comme "*index.php?PHPSESSID=*REQUETE_ID=12125"
    bTrouve = False
    For Each oLink In oHDoc.getElementsByTagName("a")
        If oLink.href Like "*index.php?PHPSESSID=*REQUETE_ID=12125" Then
           bTrouve = True
           Exit For
        End If
    Next
     
    If bTrouve = False
       MsgBox "Le lien 'Export' n'a pas été trouvé"
       Exit Sub
    End If
     
    ' On clique sur le lien
    oLink.Click
    ' On attend que la nouvelle pas soit chargée
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la nouvelle page
    Set oHDoc = IE.Document
    A+

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Rappel
    Etape 1-/ Pour sélectionner la requête : voici le name="REQUETE_ID "value="Export_C choix dans la liste déroulante,
    Safonctionne je me connecte + il selectionne la requête

    Maintenant l'étape 2

    --> Etape 2-/ cliquer sur le bouton ‘’CHERCHER’’
    pour info pour que cela fonctionne voici le code

    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
    Dim IE As SHDocVw.InternetExplorer      ' Internet Explorer
    Dim oHDoc As MSHTML.HTMLDocument        ' Document html
     
    Dim oLink As MSHTML.HTMLAnchorElement   ' Lien html (<a></a>)
    Dim bTrouve As Boolean
     
    ' Création du navigateur
     Set IE = New SHDocVw.InternetExplorer
    IE.Visible = True
    ' Ouverture de la page web
    IE.navigate "___url____"    ' ### remplacer ___url____ par l'adresse de la page web ###
    ' On attend que IE soit dans l'état READYSTATE_COMPLETE et que Busy = False
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la page
    Set oHDoc = IE.Document
     
    ' Rercher lien "Export" dont la cible est
    ' comme "*index.php?PHPSESSID=*REQUETE_ID=12125"
    bTrouve = False
    For Each oLink In oHDoc.getElementsByTagName("a")
        If oLink.href Like "*index.php?PHPSESSID=*REQUETE_ID=12125" Then
           bTrouve = True
           Exit For
        End If
    Next
     
     
    ' On clique sur le lien
    oLink.Click
    ' On attend que la nouvelle pas soit chargée
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
    ' Référencer l'objet Document de la nouvelle page
    Set oHDoc = IE.Document
    l'étape 2 consiste à faire un click sur le bouton RECHERCHER,

    pas réussie à faire y a t il une piste ?

  19. #19
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Recherche dans les propriétés de ton bouton, lorsque tu l'as trouvé sur la page, au lieu de cliquer dessus, tu cherches l'url qu'il appelle, ensuite tu utilises cette url avec le code qui sert à télécharger un fichier.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Salut

    Effectivement pour simplifier, je suis d'accord mais c'est la même URL pour sélectionner la requête que pour la recherche,

    l'url n'a pas changé mais le point bloquant c'est que je n'arrive pas avec le code évoqué à

    cliquer sur le bouton "RECHERCHER" pour avancer à la suite

    L'ETAPE 1 se connecter à la requête --> sa marche OK

    L'ETAPE 2 cliquer sur le bouton l'actionner je sais pas faire
    code et id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "><em unselectable="on"><button class="x-btn-text" type="submit" id="ext-gen932">Chercher</button></em></td><td class="x-btn-

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/05/2015, 12h18
  2. [AC-2003] Ré-importer un fichier csv généré par une application intranet
    Par Just_Jon dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/10/2013, 14h11
  3. Réponses: 2
    Dernier message: 11/09/2008, 13h49
  4. remplacement carré par ; dans un fichier excel crée par une macro
    Par om51ft dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2007, 16h00
  5. Réponses: 1
    Dernier message: 02/02/2006, 14h26

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