Recherche contenu alphanumérique dans page web

Bonjour à tous,

Je débute en VBA.

J’ai des tableaux Excel de plusieurs centaines de lignes.

Sur chaque ligne, 3 colonnes :

• Colonne A : une URL de page web (URL différente pour chaque ligne)

• Colonne B : un contenu alphanumérique : suites de mots et / ou de chiffres, (contenu différent pour chaque ligne)

• Colonne C : contenu trouvé (OUI / NON)

Je dois vérifier si le contenu de la cellule B1 se trouve sur la page web correspondante à l’URL de la cellule A1, et indiquer la réponse en C1…

Idem pour toutes les lignes

Serait-il possible d’automatiser le process grâce au VBA ?

Si oui :

• Existe-t-il des fonctions Excel dédiées ?

• Existe-t-il déjà des « frames » dédiées ?

J’ai déjà planché quelques heures sur le sujet, mais tout seul je n’avance pas

Alors d’avance un grand merci à tous ceux qui me répondront

Bonjour,

Il faut interroger chaque site par une fonction du type :

Function HTML(Url As String) As String
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", Url, False
        .send
        HTML = .responseText
    End With
End Function

qui te donnera le contenu de la page web en texte

A partir de là, tu testes si ce contenu contient les termes

Attention aux accents qui dans une page html sont codés

Si tu veux aller plus loin, donne un bout de fichier excel.

Bonjour,

Un grand merci pour ta réponse !

Mais est-il possible d'automatiser la recherche du contenu de la colonne B sur la page web ?

Pour info, quand je procède "manuellement" je copie / colle le contenu colonne B dans le "Finder" (CTRL+F).

Ci-joins et comme proposé un extrait type des tableaux Excel que j'ai à traiter.

D'avance merci et bonne journée

GJ

Bonjour à tous,

Oui, facile d'automatiser avec la fonction indiquée par Steelson :

Sub Verification()
Dim S As String, i As Long

    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            S = HTML(.Cells(i, 1).Value)
            .Cells(i, 3).Value = IIf(InStr(S, .Cells(i, 2).Value) > 0, "Oui", "Non")
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

Function HTML(Url As String) As String
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", Url, False
        .send
        HTML = .responseText
    End With
End Function

Pierre

Oui, facile d'automatiser avec la fonction indiquée par Steelson :

ben oui, Pierre, tu sais où je l'ai trouvée ... je l'ai trouvée plus simple que la mienne !!

ben oui, Pierre, tu sais où je l'ai trouvée ... je l'ai trouvée plus simple que la mienne !!

Bonjour,

J'ai testé et ça marche ! Génial !

Un grand merci à vous 2, Pierre 56 & Steelson !

Juste une chose encore :

ça marche à 100% pour certaines langues :

français / Allemand / anglais / Portugais / Italien / espagnol / Norvégien / suédois

Mais pas pour d'autres :

Tchèque / Finois / Danois / Polonais / Roumain...

Pour ces langues, même si le contenu existe dans la page web, il n'est pas reconnu.

J'ai d'abord pensé à un problème de prise en charge de ces langues par ma version d'Excel... a priori c'est pas ça.

J'ai ensuite pensé à la remarque de Steelson concernant les accents et les caractères spéciaux codés en HTML

J'ai fait des tests :

Quand je recherche du texte écrit dans Excel ou dans word : pour ces langues ça ne marche pas

Quand je recherche du texte directement copié dans ces langues sur une page web : ça fonctionne

Comment pourrais-je paramétrer ma recherche et / ou mon fichier sourcre pour que ça fonctionne ?

Remarque :

J'ai aussi des fichiers en russe, en chinois...

Encore merci

GJ

Ah, c'est particulier en effet.

Il serait intéressant d'avoir un exemple avec une adresse de site et une chaine à chercher dans une de ces langues. Mais pas sûr qu'on arrive à faire qqchose ...

Pierre

Mais pas pour d'autres :

Tchèque / Finois / Danois / Polonais / Roumain...

Pour ces langues, même si le contenu existe dans la page web, il n'est pas reconnu.

Il faudrait connaître la codification de la page web : utf-8 (unicode) ou ancienne genre Windows-1252 ?

Affiche la source de la page web et dis nous ce qu'il y a en début ....

De plus, même en utf-8, les caractères ne sont pas codés en "clair", exemple é s'écrira é

Là contrairement à Pierre, je suis sûr qu'on y arrivera ...

Bonjour,

Je ne peux pas afficher publiquement les codes source, mais j'ai regardé : toutes les pages concernées sont en UTF8

J'espère que ça vous suffira ?

Merci

GJ

Dans ce cas, regarde bien comment sont écrits les caractères ... fais la recherche d'un mot.

Voici une table partielle de codage des caractères ... il doit probablement y avoir des signes de ce type &#nnn;

Si oui, on peut alors appliquer au texte recherché une fonction de ce type

Function texthtml(texte As String)
    texthtml = ""
    For i = 1 To Len(texte)
        Select Case Asc(Mid(texte, i, 1))
        Case Is = 10
            texthtml = texthtml & "<br/>"
        Case Is = 39
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Is > 127
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Else
            texthtml = texthtml & Mid(texte, i, 1)
        End Select
    Next
End Function
capture d ecran 535

Bonjour,

Ok, je vais tester cette méthode entre ce soir et demain.

ça devient technique pour moi, j'ai besoin d'un peu de temps pour digérer.

Un grand merci en tout cas !

GJ

Rechercher des sujets similaires à "recherche contenu alphanumerique page web"