Extraction de donnée sur un site qui a identifiant et mot de passe

J'utilise une macro pour extraire des donnée d'un site internet, ca fonctionne tres bien mais je ne peux pas le faire pour les site qui me demande un identifiant et mot de passe comme ce site :

https://drt-prod.mirakl.net/login

Comment je doit modifier ma macro pour mettre l'identifiant et mot de passe

Voici le code:

Sub TesterLaVitesseDeMacro()
    Columns("C:T").Select
    Selection.ClearContents
'par Excel-Malin.com ( https://excel-malin.com )
On Error GoTo Erreur

'stocker le moment de début
MacroDebut = Now

Dim i%, k%, URL$, avant1$, avant2$, apres1$, apres2$, indice%

On Error Resume Next
    For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row

        DoEvents
        URL = Cells(i, "B").Value
    Application.Wait Now + TimeValue("00:00:25")
        With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", URL, False
            .Send
            If .Status = 200 Then
                For k = 1 To 17

                    avant1 = Sheets("paramètres").Range("avant1").Offset(0, k).Value
                    apres1 = Sheets("paramètres").Range("apres1").Offset(0, k).Value
                    avant2 = Sheets("paramètres").Range("avant2").Offset(0, k).Value
                    apres2 = Sheets("paramètres").Range("apres2").Offset(0, k).Value
                    Cells(i, "B").Offset(0, k).Value = Replace(mydata(.responseText, avant1, apres1, avant2, apres2), Chr(10), "")

                Next
                Cells(i, "B").Offset(0, k).Value = Date
            End If
        End With
    Next

    'comparer le début & la fin et afficher le résultat

Exit Sub

Erreur:
MsgBox "Une erreur est survenue..."
End Sub

Function mydata(texte As String, debut1 As String, fin1 As String, debut2 As String, fin2 As String)
    mydata = Split(Split(texte, debut1)(1), fin1)(0)
    If debut2 <> "" And fin2 <> "" Then mydata = Split(Split(mydata, debut2)(1), fin2)(0)
End Function

Bonjour,

Sujet complexe, il faut surtout savoir comment est gérée cette inscription. Est-ce qu'un jeton est attribué au moment de l'identification, ou bien est-ce géré par des cookies ?

  • Quand tu es identifié la matin par exemple et que tu quittes un moment ta session, est-ce que tu dois de nouveau t'identifier ?
  • Est-ce que l'identification est valable pour un long moment (les sites demandent si on veut rester "connectés") ?

Essaie aussi de te logger via IE et lance ta macro.

Bonjour,

quan je me log sur IE la macro n'extrait pas de données

Quan je m'indentifie le mation et que je quitte , je suis obliger de remetre mes identifiant et mot de passe.

Avec quel navigateur ?

C'est curieux qu'avec IE cela n'extrait pas les données alors ! car justement il semble que tes identifiants soient "sauvegardés" en cookies.

Ce sera possible, mais complexe alors.

Salut Jerome,
Salut Steelson,

pas expert du tout mais j'ai du récemment résoudre ce type de souci pour l'agenda de mes collègues.

- je déclare ceci en Module1 ;

Public Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

- je m'identifie d'abord (HTTP sans le S) ;

ShellExecute 0, "", "http://" & "Login" & ":" & "Mdp" & "@URL", "", "", 0

- je télécharge ensuite les fichiers nécessaires (HTTPS, ici avec le S)

ShellExecute 0, "", "https://....", "", "", 0

Pas certain du tout que ce soit compatible ou adaptable avec GET mais, ce serait une première piste.


A+

Hey Curulis, mais tu brûles, non non tu deviens hyper spécialiste !

je pense en effet qu'une fois signé, il faudra lancer le site dans un navigateur par ShellExecute avec une astuce qui sera de faire précéder l'url par view-source: on récupère ainsi le code source que l'on peut travailler.

#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Sub telecharger()
Dim nav As Long, MyData As DataObject
Set MyData = New DataObject
Dim page As New HTMLDocument

    fenetre = ActiveWindow.Caption

    ' premier lancement d'un site quelconque afin d'ouvrir automatiquement le navigateur
    nav = ShellExecute(0, "open", "https://www.qwant.com/", 0, 0, 1)
    Application.Wait (Now + TimeValue("00:00:02"))

    For ligne = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

        url = Sheets(1).Cells(ligne, 1)

        ' code pour se mettre dans la barre d'adresse et pouvoir renseigner l'url
        SendKeys "%d"
        Application.Wait (Now + TimeValue("00:00:01"))
        ' écriture de view-source: suivi de l'url
        SendKeys "view-source:" & url
        SendKeys "{ENTER}"
        ' temps d'attente du chargement complet, dépend de la qualité de la connexion et de l'état du PC
        Application.Wait (Now + TimeValue("00:00:10"))
        ' envoi de Ctrl+a (tout sélectionner)
        SendKeys "^a"
        Application.Wait (Now + TimeValue("00:00:01"))
        ' envoi de Ctrl+c (copier)
        SendKeys "^c"
        Application.Wait (Now + TimeValue("00:00:01"))
        ' récupération du contenu du presse-papier
        MyData.GetFromClipboard
        txt = MyData.GetText(1)
        ' page.body.innerHTML = txt

        tbl = Split(txt, "<div id=""graph")
        For j = 1 To UBound(tbl)
            Sheets(1).Cells(ligne, j + 1) = Replace(Replace(Replace(Split(Split(tbl(j), ">")(1), "<")(0), vbTab, ""), vbCrLf, ""), " ", "")
        Next

    Next
    'SendKeys "%{F4}"

    fin
    Application.Wait (Now + TimeValue("00:00:02"))
    AppActivate fenetre & " - Excel"

End Sub

Sub fin()
    Open Environ("TEMP") & "\" & "fin" & ".htm" For Output As #1
        Print #1, "<html><body>Fin du traitement, retour sur excel ...</body></html>"
    Close #1

    ShellExecute 0, "open", Environ("TEMP") & "\" & "fin" & ".htm", vbNullString, "C:\TEMP\", 1 'SW_SHOWNORMAL
End Sub

il ne faut toucher à RIEN tant que le traitement n'est pas terminé ... donc pause-café ou pause-pipi

j'ai utilisé split ici, mais mieux vaut utiliser page.body.innerHTML

autre solution à tester bien plus performante : https://forum.excel-pratique.com/astuces/google-sheets-importxml-et-xpath-150789

Bonjour,

Je n'ai pas compris ou je dois mettre mon mot de passe et identifiant

J'ai ouvert IE avec le mot de passe et identifiant mais ca ne fonctionne pas, on dirait que office 365 a un navigateur propre a lui meme

Bonjour,

J'ai ouvert IE avec le mot de passe et identifiant mais ca ne fonctionne pas, on dirait que office 365 a un navigateur propre a lui meme

désolé, j'avais mal lu :

Quan je m'indentifie le mation et que je quitte , je suis obliger de remetre mes identifiant et mot de passe.

je ne sais pas faire et je doute qu'on puisse le faire facilement si toutefois c'était possible.

Est ce qu'il est possible d'ouvrir le navigateur de d'excel? avant sur les ancienne versionon avait accede au navigateur de excel

est ce qu'il est possible d'y accedé toujours?

je ne connais pas 365

Salut tout le monde,

c'est quoi cette histoire de navigateur d'Excel ?

As-tu au moins essayé de te logger à ton site selon la méthode que j'utilise ?

ShellExecute 0, "", "http://tonLogin:tonMotdePasse@drt-prod.mirakl.net/login


A+

si j'ai des @ . et / dans mon identifiant et mot de passe cela peut posé des problemes?

"D'après" mes lectures sur le sujet, mais je n'ai pas ce problème de caractères spéciaux dans mes login et Mdp, donc non testé, le système est, paraît-il, suffisamment "intelligent" pour faire la part des choses puisque :
- le login commence après "//" et se termine à ":" ;
- le mot de passe commence après ":" et se termine au "@" précédant l' URL du site.

Voilà, teste... sur une copie de ton fichier, par sécurité, et, si ça explose, fais-en nous part !!


A+

Bonjour,

Pour teste:

Si dans la barre d'adresse du nagivateur je met " http://tonLogin:tonMotdePasse@drt-prod.mirakl.net/login " , ca doit ouvrir directement la page?

Essaye, ose, lance-toi...
Á part tourner en rond, l'ordi ne va pas exploser !

Tu n'imagines pas le nombre de fois que je dois relancer Excel (entre autres) après plantage !!


A+

Rechercher des sujets similaires à "extraction donnee site qui identifiant mot passe"