Importer 3 données d'un site web sur plusieurs onglets V2

Bonjour Steelson,

J'ai malheureusement fermé le sujet trop rapidement.

Je souhaitais svp indiquer dans la formule :

pour tous les liens dont la colonne B,C ou D est vide faire fonctionner la formule sinon ne rien faire.

Merci d'avance pour votre aide

Bonjour à tous,

J'ai pu avancé sur ce que je voulais faire dans la formule

Merci beaucoup à Steelson qui a tout fait pour ça, un vrai génie ! Grand merci à lui !

Peut il y avoir quelqu'un pour me dire si ce que j'ai fait est juste svp il s'agit de la partie en jaune ?

De plus y a t-il un moyen pour que le If cells en jaune passe avant le lancement de Qwant car je voudrais que si et seulement si la colonne B est vide alors lancer Qwant et tout le reste de la formule sinon passer à la ligne suivante.

Dans le cas présent si toutes les lignes sont pleines Qwant se lance quand même et ferme mon navigateur internet.

capture

Merci d'avance pour votre aide.

De plus y a t-il un moyen pour que le If cells en jaune passe avant le lancement de Qwant car je voudrais que si et seulement si la colonne B est vide alors lancer Qwant et tout le reste de la formule sinon passer à la ligne suivante.

Dans le cas présent si toutes les lignes sont pleines Qwant se lance quand même et ferme mon navigateur internet.

En fait Qwant est juste là pour lacer le navigateur ! Il n'est pas possible de le déplacer car il faut que le navigateur soit lancé, identifié par excel, pour ensuite écrire dans la barre d'adresse view-source: et ensuite l'url.

Par contre, pour éviter de fermer le navigateur, j'avais proposé de lancer une page banale qui disait "Fin du traitement, retour sur excel ..." et ne fermait pas le navigateur, mais que tu n'avais pas retenue.

Il y a aussi une autre solution qui est la suivante :

#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
        If Cells(ligne, 2) = "" Then
        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
        End If
    Next
    SendKeys "%d"
    Application.Wait (Now + TimeValue("00:00:01"))
    SendKeys "https://www.qwant.com/"
    SendKeys "{ENTER}"
    Application.Wait (Now + TimeValue("00:00:03"))
    AppActivate fenetre & " - Excel"

End Sub

Bonjour Steelson,

Merci beaucoup pour votre temps.

Cette méthode me va parfaitement.

Juste un petit problème j'obtiens une erreur d’exécution '5' à la fin, je suppose qu'à la fin la formule est censé revenir dans Excel mais ce n'est pas le cas elle finit à Qwant.

capture

Sans rien toucher, je reviens bien sur excel de mon côté.

Cette ligne est-elle bien présente ?

    fenetre = ActiveWindow.Caption

Peux-tu faire une copie d'écran de excel, juste la partie haute que je voie le titre au-dessus du bandeau ? merci

Oui elle est bien présente

capture1
capture 2

Pourquoi est-il indiqué "Échec de .... " c'est cela qui coince pour le retour car c'est "incrusté" dans le nom de la fenêtre.

Pour les essais, remplace alors cette ligne comme suit dernière ligne du code)

AppActivate fenetre & " - Excel (Échec de l'activation du produit)"

en espérant que le E accent aigu passe dans VBA, et dis moi si c'est ok !

Malheureusement j'ai toujours le même problème avec ou sans accent

Je t'envoie un outil permettant de repérer les fenêtres ouvertes et leurs exacte dénomination. Tu me diras ce que l'outil trouve ...

9winlist.xlsm (18.57 Ko)

Je crois avoir une erreur

capture

Tu es en 64bits ... il faudrait que je le fasse évoluer alors.

Essaie cet autre outil

9liste-fenetres.zip (413.06 Ko)

J'ai pris le titre qui se trouve dans la 1ère capture d'écran que j'ai mis dans la macro mais j'ai toujours le même problème

capture1
capture2

J'ai pris le titre qui se trouve dans la 1ère capture d'écran que j'ai mis dans la macro mais j'ai toujours le même problème

capture1

en texte, cela donne quoi ? parce qu'avec une image je ne peux pas savoir s'il y a un espace devant comme tu l'as mis dans ta macro.

capture2

es-tu certain de l'espace avant et après ? il faut faire un strict copier/coller

Je vous envoie le fichier car pour moi il n'y en a pas mais il est préférable que vous confirmiez cela

61.txt (989.00 Octets)

Oui j'ai fait un copier coller j'ai même recommencer sans espace entre les guillemets

Essaie l'une ou l'autre de ces 2 versions

AppActivate "interro-via-chrome-3 - Excel (Échec de l’activation du produit)"

AppActivate "interro-via-chrome-3"

comme tu es en 64bits, il se peut que ce soit la seconde (mais cela m'étonnerait)

Génial !

la 1ère fonctionne merci beaucoup Steelson

Merci infiniment pour votre aide !

Même la 2ème marche très bien

Rechercher des sujets similaires à "importer donnees site web onglets"