Macro VBA pour importer un tableau de données situés sur un site protégé (HTTPS)

E.Legrand

XLDnaute Nouveau
Bonjour,
Après de nombreuses recherches infructueuses, j'aimerai obtenir de l'aide.
Dans le cadre de mon travail, je dois récupérer des données sur le PMSI (données médicales confidentielles). Ces données concernent des indications en terme de dépense pour tous les établissement de Santé de ma région et sont mises à jour tous les mois. Afin d'éviter de tout importer avec des multiples copier coller qui me prendraient un temps énorme, je désire faire un programme qui récupère automatiquement ces données pour un etablissement qu'on a choisit au préalable. Cependant la difficulté réside dans le fait que je dois me logguer pour accéder au site. Si bien qu'un import classique de la forme suivante ne marche pas (car pas d'acces au site sans le mot de passe renseigné):

Code:
ActiveWindow.SmallScroll Down:=3
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;https://www.epmsi.atih.sante.fr/appli_16.do?   
         year=2011&trimestre=1&action=3&applicationState=3" _
        , Destination:=Range("Feuil4!$A$1"))
        .Name = "DonnéesExternes_30"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingAll
        .WebTables = "6"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

Du coup pour contourner cela, j'ai fait un code qui me permet de naviguer directement dans la page web, rentrer mon identifiant et mon mot de passe et accéder à la page que je veux:


Code:
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    With IE
        .navigate "https://pasrel.atih.sante.fr/cas/login?service=https%3A%2F%2Fwww.epmsi.atih.sante.fr%2Fcas%2Fcaslogin.do"
        Do Until .readyState = 4                      '
            DoEvents
        Loop                                          'attend la fin du chargement
    End With
    Dim bOk As Boolean
    Set elementHtml = IE.Document.getElementById("username")
    If Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "MON IDENTIFIANT"
        Set elementHtml = IE.Document.getElementById("password")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "MON MOT DE PASSE"
            Set elementHtml = IE.Document.getElementById("submit")
            If Not elementHtml Is Nothing Then
                bOk = True
                elementHtml.Click
            Else
                bOk = False
            End If
        Else
            bOk = False
        End If
    Else
        bOk = False
    End If
    DoEvents
    With IE
        .navigate "https://www.epmsi.atih.sante.fr/jsp/applis/applis.jsp"
        Do Until .readyState = 4                      
            DoEvents
        Loop                                         
    End With
    With IE
        .navigate "https://www.epmsi.atih.sante.fr/jsp/applis/applisMat2a.jsp"
        Do Until .readyState = 4                      
            DoEvents
        Loop                                          
    End With
    With IE
        .navigate "https://www.epmsi.atih.sante.fr/appli_16.do?champPmsi=1&statut=1&applicationType=3"
        Do Until .readyState = 4                      
            DoEvents
        Loop                                          
    End With
    With IE
        .navigate "https://www.epmsi.atih.sante.fr/appli_16.do?year=2011&trimestre=1&action=3&applicationState=3"
        Do Until .readyState = 4                      
            DoEvents
        Loop                                          
    End With

Mais ca ne m'avance pas car une fois que je suis sur la page ou se trouve le tableau qui m'intéresse, je ne sais pas comment faire pour l'importer, dire a excel que je veux pas importer le tableau se trouvant à l'adresse URL (www.......) mais le tableau se trouvant sur la page internet active ce qui est sensiblement différent. Si vous avez des idées, je suis preneur.

Cordialement,

E.Legrand
 

Discussions similaires

Réponses
0
Affichages
256
Réponses
0
Affichages
137
Réponses
8
Affichages
627

Statistiques des forums

Discussions
312 107
Messages
2 085 355
Membres
102 873
dernier inscrit
yayo