Forum Clubic

VBA excel : Workbooks.OpenText => lien complet mais orientation sur une page "connexion" malgré IE8 actif et connexion déjà établie

Bonjour,

un soucis avec VBA sous excel (Office 2007 - Windows 7 - IE8) :

Je me connecte a un site, lequel me met directement en page “connexion”. Je n’ai pas besoin de mettre profil et mot de passe a priori je suis déjà reconnu.
Je dois neanmoins cliquer sur ce lien “connexion” pour être effectivement sur le site.
Jusqu’ici, pas de soucis.

J’ai donc IE8 actif avec une connexion effective.

Coté Excel, malgré cette connexion effective, lorsque je souhaite atteindre une page du site, il m’ouvre finalement la page de “conexion”

Je suis largué avec ce problème car j’étais avant sous XP, et une fois la connexion validé sous IE8, je pouvais a loisir via excel me connecté a toute les pages du forum directement.

Les connexions faites via Excel me permette d’avoir la page directement dans un classeur excel, ou je peux exploiter les données situées dans des celulles.

Les références du projet :
Microsoft Excel 12.0 Object Library
OLE Automation
Microsoft Office 12.0 Object Library
Microsoft HTML Object Library
Microsoft Internet Controls

voici le code que j’utilise :

'---------------------------

Sub OuvreHTMLink(E_Adress)

On Error Resume Next

Workbooks.OpenText E_Adress, xlWindows, _
1, xlDelimited, ConsecutiveDelimiter:=False, Tab:=True

If Err Then MsgBox Err.Description: Exit Sub

On Error GoTo 0

End Sub

'---------------------------

Je supose un manque quelque part pouvant indiquer que ma connexion est effective, une notion de cookies ? un problème de processus “distinct” pour chaque onglet d’IE, et donc un nouveau processus d’accés internet via excel m’obligeant finalement a recliquer sur “connexion”.
J’ai tenté l’accepteation des cookies sous IE8 (http://www.commentcamarche.net/forum/affich-12318033-autoriser-cookies-sur-ie8) mais ça n’a pas résolu.

Je suis un peu sec sur un moyen soit par code VBA, ou simplement un paramétrage sous Windows7, ou encore sous IE8…

Merci de vos conseils par avance.

je me sens seul :frowning:

Bon, personne pour me donner un coup de pouce :frowning:

Alors une solution via l’objet “InternetExplorer.Application”

L’ouverture d’une adresse avec le dernier ID de connexion m’amène finalement sur une page “CONNEXION” car l’ID (le jeton) a été changé (24H d’utilisation par exemple).
Sur cette page CONNEXION se trouve finalement un lien qui lui contient un nouvel ID.

La récupération de cette page via un fichier HTM me permet de retrouver l’ID, déduction faite de la partie du lien standard.
Aprés récupération est stockage, puisque toute les pages internet en seront désormais visible uniquement avec ce nouvel ID, j’ai plus qu’à modifier chaque lien en remplaçant l’ancien ID par le nouveau (fonction Replace tout bête).

Voici une solution, qui n’est peut être pas celle qu’aurait choisi un professionnel du métier, mais là seul que j’ai pu convenablement appréhender au regard de mes compétences de novice en VBA.


Reférences nécessaires : Microsoft Internet Controls

Function ExtractWebPageAndSaveIt(E_Adress As String, E_FullPAth As String) As Boolean
On Error GoTo Standard_Error

Dim L_Object_IE As Object
Set L_Object_IE = CreateObject(“InternetExplorer.Application”)

' .........................
'   OUVERTURE IE
' .........................

' paramétrage ouverture IE avec le lien
With L_Object_IE
    .AddressBar = False
    .StatusBar = False
    .MenuBar = False
    .Toolbar = 0
    .Visible = False
    .Navigate E_Adress
End With

'Laisse le temps à IE de charger en mémoire avant traitement
While L_Object_IE.Busy
    'Do Nothing
Wend
While L_Object_IE.Document.ReadyState <> "complete"
    'AgaIn Do Nothing
Wend

' ................................
'   ENREGISTREMENT HTML EN LOCAL
' ................................

' E_FullPath vaudrait un truc du genre : "c:\mondossier\monfichier.htm"
ExtractWebPageAndSaveIt = WriteInFile(L_Object_IE.Document.body.outerHTML, E_FullPAth)

Cleanup:
L_Object_IE.Quit
Set L_Object_IE = Nothing
Exit Function
Standard_Error:
G_PrintDone = GeneralError(“Module1”, “Fonction”, “ExtractWebPageAndSaveIt”, Err.Number, Err.Description)
ExtractWebPageAndSaveIt = False
End Function

'------------------------------------------------------------------------------------------------------------------------------------------------------------------
’ ECRITURE D’UNE PAGE WEB DANS UN FICHIER
’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function WriteInFile(E_outerHTML As String, E_PathAndFile As String) As Boolean
On Error GoTo Standard_Error

intFile = FreeFile
Open E_PathAndFile For Output As #intFile

'This will write the data To file using the HTML passed In
Print #intFile, E_outerHTML

Cleanup:
Close #intFile
WriteInFile = True

Exit Function
Standard_Error:
G_PrintDone = GeneralError(“Module1”, “Fonction”, “WriteInFile”, Err.Number, Err.Description)
WriteInFile = False

End Function

'------------------------------------------------------------------------------------------------------------------------------------------------------------------
’ OUVERTURE DU FICHIER HTM DANS EXCEL
’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------

Function OpenTheFile(E_FileName As String, E_PathAndFile As String) As Boolean
On Error GoTo Standard_Error

Workbooks.Open Filename(E_PathAndFile )

Windows(E_FileName).Activate
Worksheets(E_FileName).Activate
    Cells.Select
    Selection.UnMerge
OpenTheFile = True

Cleanup:
Exit Function
Standard_Error:
G_PrintDone = GeneralError(“Module1”, “Fonction”, “OpenTheFile”, Err.Number, Err.Description)
OpenTheFile = False
End Function


Si aprés, des compléments pour création de répertoire et suppression du fichier

’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
’ CREATION D’UN REPERTOIRE
’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------

Function CreateDirectory(E_Directory As String) As Boolean
On Error GoTo Standard_Error

test = Dir(E_Directory, vbDirectory)

If Dir(E_Directory, vbDirectory) = “” Then
VBA.MkDir E_Directory
End If
CreateDirectory = True
Exit Function
Standard_Error:
G_PrintDone = GeneralError(“Module1”, “Fonction”, “CreateDirectory”, Err.Number, Err.Description)
CreateDirectory = False
End Function

’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
’ SUPPRESION D’UN FICHIER DU DISQUE DUR LOCAL
’ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function CloseTheFile(E_FileName As String, E_PathAndFile As String) As Boolean
On Error GoTo Standard_Error

Windows(E_FileName).Close SaveChanges:=False

Kill  E_PathAndFile 

CloseTheFile = True

Cleanup:
Exit Function
Standard_Error:
'G_PrintDone = GeneralError(“Module1”, “Fonction”, “CloseTheFile”, Err.Number, Err.Description)
CloseTheFile = False
End Function