IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Extraire une info d'une chaine de caractéres de longueur aléatoire


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractéres de longueur aléatoire
    Bonjour à tous,

    Je bloque sur le problème suivant.

    Je stocke le code source d'une page web dans une variable. J'aimerais extraire le prix des articles contenus dans cette variable mais l'identifiant unique, qui me permettrait de le faire, est distant aléatoirement :

    Samsung<br>patatipatata...> 520 euro<
    panasonic<br>patatipatatapatatipatatapatatipatata...> 550 euro<

    Comment faire pour pointer ces chaines indépendamment de la longueur et en extraire le prix

    Je vous remercie par avance pour votre précieuse aide.

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Ce bout de code devrait t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Chaine = "Samsung<br>patatipatata...> 520 euro<"
    Pos = InStr(Chaine, " euro<") - 1
    Chaine = Mid(Chaine, 1, Pos)
    Longueur = Len(Chaine)
    For x = Longueur To 1 Step -1
        If Mid(Chaine, x, 1) = ">" Then
            prix = Mid(Chaine, x + 2)
            Exit For
        End If
    Next

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Ou encore celui-ci avec un peu plus de détails pour le contenu de ladite page où il y aurait plusieurs lignes de texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Option Explicit
        Dim txt
        txt ="Samsung<br>patatipatata...> 520 euro<" & vbnewline & _
        "panasonic<br>patatipatatapatatipatatapatatipatata...> 550 euro<"
        MsgBox ChercherPrix(txt)
        Function ChercherPrix(strText)
            Dim I, Pos, Tb, tx1, tx2, tmpPos, Resultat
            Tb = Split(strText, vbNewLine)
            Pos = 0
            If Ubound(Tb) = 0 Then Exit Function
            For I = 0 To Ubound(Tb)
              tx1 = "" 
              tx2 = ""
              Pos = InStr(1, Tb(i), "euro<", vbTextCompare)
              tmpPos = 0
              If Pos > 0 Then
                  tx1 = Mid(Tb(i), Pos - 1, Pos + 2)
                  Do
                     tx2 = Mid(Tb(i), Pos - tmpPos, 1) + tx2
                     tmpPos = tmpPos + 1
                  Loop Until Mid(Tb(I), Pos - tmpPos, 1) = ">"
              End If
              Resultat = Resultat & Mid(tx2, 1, Len(tx2) - 1) + Mid(tx1, 1, Len(tx1) - 1) & vbNewLine
            Next
            ChercherPrix = Resultat
        End Function
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractére de longueur aléatoire
    Merci à tous les deux pour votre aide et au temps passé pour les codes.

    Par contre, cela ne résout pas mon problème de base qui est en amont de la solution que vous m'avez proposée. Mais ne vous inquiétez pas...ça va me servir ! En effet, vous indiquez, tous deux, un texte en dur précis dans la variable txt ou chaine. Et ensuite vous faite l'extraction.

    Moi ce que je cherche, c'est d'alimenter automatiquement votre variable txt ou chaine. Pour l'instant, ma macro lit une pages web, fait entrer le code source entier dans une variable par parquet de 1024 caractéres.

    Je n'ai aucune idée de la syntaxe mais en fait l'idée serait la suivante

    votre variable chaine ou txt = mid(ma variable, Samsung*euro).
    et ensuite le reste de votre macro

    J'ai matérialiser le fait qu'entre l’identifiant unique de la marque et le mot euro la longueur du texte est inconnu et donc de longueur variable par un * comme je l'utilise souvent lorsque je fais une recherche sous excel.

    N'hésitez pas à m'indiquer si j'ai été claire comme du jus de chique !!

    Et encore merci par avance pour votre aide

  5. #5
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Quand tu écris :
    ma macro lit une pages web, fait entrer le code source entier dans une variable par parquet de 1024 caractéres.
    Tu peux développer, stp ? Car tu parles bien d'une variable.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractére de longueur aléatoire
    Oui exactement. J'ai essayé d'adapter le code ci-dessous. C'est plus efficace que de manipuler IE. Par contre dans le code ci-dessous, l'élément à chercher est unique et prévisible car toujours formater de la même façon.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Public Declare Function OuvreInternet Lib "wininet" _
        Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, _
        ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
    Public Declare Function fermeInternet Lib "wininet" _
        Alias "InternetCloseHandle" (ByVal hInet As Long) As Integer
    Public Declare Function Ouvrepage Lib "wininet" _
        Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, _
        ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, _
        ByVal dwContext As Long) As Long
    Public Declare Function code_page Lib "wininet" _
        Alias "InternetReadFile" (ByVal hFile As Long, ByVal sBuffer As String, _
        ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
     
    Function valo_Euronext(sicovam)
    'renvoie le cours selon Euronext, ou bien "" si échec
    Dim texte_code As String * 1024
    sicovam = Right("00" & sicovam, 5)
    page_à_lire = "http://www.bourse-de-paris.fr/servlet/market8.ValueResult?xls=ok&search=" & sicovam & "&lang=fr"
    encr:
    internet = 0
    'boucle jusqu'à trouver une connexion internet
    Do While internet = 0
    internet = OuvreInternet("toto", 1, vbNullString, vbNullString, 0)
    Application.Wait Now + 0.5 / 24 / 3600
    Loop
    URL = 0
    URL = Ouvrepage(internet, page_à_lire, vbNullString, _
        ByVal 0&, &H80000000, ByVal 0&) 'ouvre la page Web
    Application.Wait Now + 0.5 / 24 / 3600
     
    'lit le texte de la page
    code_page URL, texte_code, 1024, nb_caractères_lus
    txtlu = Left(texte_code, nb_caractères_lus)
     
    fermeInternet URL 'ferme la page
    fermeInternet internet 'ferme Internet
    'si la page n'est pas une page Euronext, recommencer
    If InStr(txtlu, "Code") = 0 Then GoTo encr
     
    valo_Euronext = ""
    'rechercher le numéro de sicovam, puis les tab
    If InStr(txtlu, sicovam) > 0 Then
    txtlu = Right(txtlu, Len(txtlu) - InStr(txtlu, sicovam) - 1)
    txtlu = Right(txtlu, Len(txtlu) - InStr(txtlu, Chr(9))) 'tab
    txtlu = Right(txtlu, Len(txtlu) - InStr(txtlu, Chr(9))) 'tab
    If txtlu <> "" Then txtlu = Left(txtlu, InStr(txtlu, Chr(9)) - 1)
    If IsNumeric(txtlu) Then valo_Euronext = 1 * txtlu
    End If
     
    End Function

  7. #7
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Tu peux montrer un extrait de la variable qui contient le code source de la page lue ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractéres de longueur aléatoire
    Bien sur PC75 !

    J'ai un peu bidonner quelques infos pour la confidentialité du code mais voici ci-dessous. L'identifiant unique est la marque et le prix que je cherche est à X caractéres de l'identifiant unique. j'ai indiqué en gras ou se trouvent les infos.

    Merci beaucoup


    var my_position = new google.maps.LatLng(38.841187, 2.230150);
    bounds.extend(my_position);
    marqueur[23] = createMarker2(ma_carte, my_position, '<div class="bulle_gg"><b><a href="http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zigoto.com/lien_externe.svlt?goto=rech_resa&destination=0351&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40"><img src="http://www.zigoto.com/photos/0351_ho_02_p_346x260.jpg" class="bordure2" width="100" height="75" style="margin-right: 5px; float: left;">Samsung</a></b> <img src="http://www.fnac.fr/lib2/.png"><br>607 boulevard Raspail<br>Paris<br><b class="titre_rubrique">151 &euro;</b><br><b class="note_list">Très bien, 8.10/10</b> (159 avis clients)', icon_num[23], 23);

    var my_position = new google.maps.LatLng(38.841496, 1.330030);
    bounds.extend(my_position);
    marqueur[24] = createMarker2(ma_carte, my_position, '<div class="bulle_gg"><b><a href="http://www.fnac.com/france/paris/"><img src="http://www.fnac.com/paris/miniatures/811.jpg" class="bordure2" width="100" height="75" style="margin-right: 5px; float: left;">Panasonic</a></b> <img src="http://www.fnac.com/lib2/etoiles3p.png"><br>121 boulevard Raspail<br>Paris<br><b class="titre_rubrique">152 &euro;</b><br><b class="note_list">Bien, 7.80/10</b> (153 avis clients)', icon_num[24], 24);

    var my_position = new google.maps.LatLng(58.819485, 3.326167);
    bounds.extend(my_position);
    marqueur[25] = createMarker2(ma_carte, my_position, '<div class="bulle_gg"><b><a href="http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zazig.com/lien_externe.svlt?goto=rech_resa&destination=1834&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40"><img src="http://www.zazig.com/photos/1834_ho_00_p_346x260.jpg" class="bordure2" width="100" height="75" style="margin-right: 5px; float: left;">LG</a></b> <img src="http://www.grosbill.fr/lib2/tv.png"><br>120, boulevard Romain Rolland<br>Paris<br><b class="titre_rubrique">178 &euro;</b><br><b class="note_list">Bien, 7.80/10</b> (610 avis clients)', icon_num[25], 25);

  9. #9
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    A partir de cette variable, tu veux récupérer quelque chose comme ça ?

    Samsung 151
    Panasonic 152
    LG 178

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractéres de longueur aléatoire
    C'est bien ça Pc 75.

    L'idée sera de faire un tableau excel avec une colonne pour la marque et une colonne pour les prix mais ça je sais faire...

  11. #11
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    A priori, avec ce code, j'obtiens bien les colonnes voulues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Chaine = Chaine & "var my_position = new google.maps.LatLng(38.841187, 2.230150);"
    Chaine = Chaine & "bounds.extend(my_position); "
    Chaine = Chaine & "marqueur[23] = createMarker2(ma_carte, my_position, '<div class=""bulle_gg""><b><a href=""http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zigoto.com/lien_externe.svlt?goto=rech_resa&destination=0351&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40""><img src=""http://www.zigoto.com/photos/0351_ho_02_p_346x260.jpg"""
    Chaine = Chaine & "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
    Chaine = Chaine & "Samsung</a></b> <img src=""http://www.fnac.fr/lib2/.png""><br>607 boulevard Raspail<br>Paris<br><b "
    Chaine = Chaine & "class=""titre_rubrique"">151 &euro;</b><br><b class=""note_list"">Très bien, 8.10/10</b> (159 avis clients)', icon_num[23], 23); "
    Chaine = Chaine & "var my_position = new google.maps.LatLng(38.841496, 1.330030);"
    Chaine = Chaine & "bounds.extend(my_position);"
    Chaine = Chaine & "marqueur[24] = createMarker2(ma_carte, my_position, '<div "
    Chaine = Chaine & "class=""bulle_gg""><b><a href=""http://www.fnac.com/france/paris/""><img src=""http://www.fnac.com/paris/miniatures/811.jpg"" "
    Chaine = Chaine & "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
    Chaine = Chaine & "Panasonic</a></b> <img src=""http://www.fnac.com/lib2/etoiles3p.png""><br>121 boulevard Raspail<br>Paris<br><b "
    Chaine = Chaine & "class=""titre_rubrique"">152 &euro;</b><br><b class=""note_list"">Bien, 7.80/10</b> (153 avis clients)', icon_num[24], 24);"
    Chaine = Chaine & "var my_position = new google.maps.LatLng(58.819485, 3.326167);"
    Chaine = Chaine & "bounds.extend(my_position);"
    Chaine = Chaine & "marqueur[25] = createMarker2(ma_carte, my_position, '<div class=""bulle_gg""><b>"
    Chaine = Chaine & "<a href=""http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zazig.com/lien_externe.svlt"
    Chaine = Chaine & "?goto=rech_resa&destination=1834&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&"
    Chaine = Chaine & "sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40"">"
    Chaine = Chaine & "<img src=""http://www.zazig.com/photos/1834_ho_00_p_346x260.jpg"" class=""bordure2"" width=""100"" height=""75"" "
    Chaine = Chaine & "style=""margin-right: 5px; float: left;"">LG</a></b> <img src=""http://www.grosbill.fr/lib2/tv.png""><br>"
    Chaine = Chaine & "120, boulevard Romain Rolland<br>Paris<br><b class=""titre_rubrique"">178 &euro;</b><br><b class=""note_list"">"
    Chaine = Chaine & "Bien, 7.80/10</b> (610 avis clients)', icon_num[25], 25);"
     
    Paragraphes = Split(Chaine, "var my_position")
    For i = 1 To UBound(Paragraphes)
        'Debug.Print Paragraphes(i)
        Pos1 = "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
        Marque = InStr(Paragraphes(i), Pos1) + Len(Pos1)
        Suite = Mid(Paragraphes(i), Marque)
        Pos2 = InStr(Suite, "</a>") - 1
        LaMarque = Mid(Suite, 1, Pos2)
     
        Pos3 = InStr(Suite, "euro") - 3
        Suite = Mid(Suite, 1, Pos3)
        Longueur = Len(Suite)
        For x = Longueur To 1 Step -1
            If Mid(Suite, x, 1) = ">" Then
                Prix = Mid(Suite, x + 1)
                Exit For
            End If
        Next
        MsgBox LaMarque & " " & Prix
    Next

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractéres de longueur aléatoire
    Juste un mot : TROP FORT !!!!!!

    Un grand merci PC75. Effectivement, la macro m'a bien remonté la marque et le prix de tous les téléviseurs qui étaient dans la variable "chaine". J'ai bien quelques caractères indésirables mais maintenant il ne me reste plus qu'à analyser le bout de code et à l'adapter au mieux.

    UN GRAND MERCI au risque de me répeter.

    Par contre, pourrais-tu m'expliquer à quoi sert split que je ne connais pas encore ?
    Split(txt, "var my_position")

  13. #13
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    La fonction split permet d'obtenir une variable de type tableau (array).
    Le premier paramètre est la chaine à traiter et le second est la valeur qui va déterminer le séparateur.

    Par exemple :
    Chaine = "10/145/235"
    Si on fait un Split(Chaine, "/"), on obtiendra :
    Chaine(0) => 10
    Chaine(1) => 145
    Chaine(2) => 235

    La propriété uBound retourne le nombre (indice) de la variable

    Si ce n'est pas clair, tu me dis.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut
    Merci pour le partage de tes connaissances.

    Je creuse et je reviens clôturer le sujet si je n'ai plus de questions

  15. #15
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Si ça t'intéresse, j'ai un bout de code qui permet de créer un tableau Excel sans utiliser Excel.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut Extraire une info d'une chaine de caractéres de longueur aléatoire
    Ben là tu m'intrigues !!! comment est-ce possible ??

  17. #17
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Voilà le code complet.
    Je dois partir, si tu veux on peut reprendre demain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Chaine = Chaine & "var my_position = new google.maps.LatLng(38.841187, 2.230150);"
    Chaine = Chaine & "bounds.extend(my_position); "
    Chaine = Chaine & "marqueur[23] = createMarker2(ma_carte, my_position, '<div class=""bulle_gg""><b><a href=""http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zigoto.com/lien_externe.svlt?goto=rech_resa&destination=0351&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40""><img src=""http://www.zigoto.com/photos/0351_ho_02_p_346x260.jpg"""
    Chaine = Chaine & "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
    Chaine = Chaine & "Samsung</a></b> <img src=""http://www.fnac.fr/lib2/.png""><br>607 boulevard Raspail<br>Paris<br><b "
    Chaine = Chaine & "class=""titre_rubrique"">151 &euro;</b><br><b class=""note_list"">Très bien, 8.10/10</b> (159 avis clients)', icon_num[23], 23); "
    Chaine = Chaine & "var my_position = new google.maps.LatLng(38.841496, 1.330030);"
    Chaine = Chaine & "bounds.extend(my_position);"
    Chaine = Chaine & "marqueur[24] = createMarker2(ma_carte, my_position, '<div "
    Chaine = Chaine & "class=""bulle_gg""><b><a href=""http://www.fnac.com/france/paris/""><img src=""http://www.fnac.com/paris/miniatures/811.jpg"" "
    Chaine = Chaine & "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
    Chaine = Chaine & "Panasonic</a></b> <img src=""http://www.fnac.com/lib2/etoiles3p.png""><br>121 boulevard Raspail<br>Paris<br><b "
    Chaine = Chaine & "class=""titre_rubrique"">152 &euro;</b><br><b class=""note_list"">Bien, 7.80/10</b> (153 avis clients)', icon_num[24], 24);"
    Chaine = Chaine & "var my_position = new google.maps.LatLng(58.819485, 3.326167);"
    Chaine = Chaine & "bounds.extend(my_position);"
    Chaine = Chaine & "marqueur[25] = createMarker2(ma_carte, my_position, '<div class=""bulle_gg""><b>"
    Chaine = Chaine & "<a href=""http://clk.tradedoubler.com/click?p=30539&a=1278201&g=20087320&url=http://www.zazig.com/lien_externe.svlt"
    Chaine = Chaine & "?goto=rech_resa&destination=1834&dayIn=04&monthIn=02&yearIn=2015&nightNb=1&adultNumber=2&childrenNumber=0&"
    Chaine = Chaine & "sourceid=[TD_AFFILIATE_ID]-[TD_PROGRAM_ID]-[TD_GE_ID]-[TD_GUID]&merchantid=RT-PC025825-&xtor=AL-40"">"
    Chaine = Chaine & "<img src=""http://www.zazig.com/photos/1834_ho_00_p_346x260.jpg"" class=""bordure2"" width=""100"" height=""75"" "
    Chaine = Chaine & "style=""margin-right: 5px; float: left;"">LG</a></b> <img src=""http://www.grosbill.fr/lib2/tv.png""><br>"
    Chaine = Chaine & "120, boulevard Romain Rolland<br>Paris<br><b class=""titre_rubrique"">178 &euro;</b><br><b class=""note_list"">"
    Chaine = Chaine & "Bien, 7.80/10</b> (610 avis clients)', icon_num[25], 25);"
     
    Paragraphes = Split(Chaine, "var my_position")
     
    'chemin = "c:\Recap.XLS"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Fic = fso.CreateTextFile(chemin, True)
    ' Titres des colonnes
    ' chr (34) remplace les guillements à la suite de l'instruction
    Fic.writeLine "ID;PWXL;N;E" ' Début du codage excel
    Fic.writeLine "C;Y1;X1;K" & Chr(34) & ("MARQUE") & Chr(34)
    Fic.writeLine "C;Y1;X2;K" & Chr(34) & ("PRIX") & Chr(34)
    Ligne = 2
     
    For i = 1 To UBound(Paragraphes)
        Pos1 = "class=""bordure2"" width=""100"" height=""75"" style=""margin-right: 5px; float: left;"">"
        Marque = InStr(Paragraphes(i), Pos1) + Len(Pos1)
        Suite = Mid(Paragraphes(i), Marque)
        Pos2 = InStr(Suite, "</a>") - 1
        LaMarque = Mid(Suite, 1, Pos2)
     
        Pos3 = InStr(Suite, "euro") - 3
        Suite = Mid(Suite, 1, Pos3)
        Longueur = Len(Suite)
        For x = Longueur To 1 Step -1
            If Mid(Suite, x, 1) = ">" Then
                Prix = Mid(Suite, x + 1)
                Exit For
            End If
        Next
        Fic.writeLine "C;Y" & Ligne & ";X1;K" & Chr(34) & (LaMarque) & Chr(34)
        Fic.writeLine "C;Y" & Ligne & ";X2;K" & (Prix)
        Ligne = Ligne + 1
    '    MsgBox LaMarque & " " & Prix
    Next
    Fic.writeLine "E" ' Fin du codage excel
    Fic.Close
    Set Fic = Nothing
    Set fso = Nothing

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 31
    Par défaut
    Bonjour à tous,

    Bon Pc75, tout va bien. Je me suis annoté le code pour l'analyser et j'ai découvert la fonction split qui sépare en paragraphes uniques la variable permettant ainsi de faire la recherche.

    Au départ, je cherchais plutôt une fonction du type : like "marquerécupéréedansunecelluleexcel * euro"
    Mais je pense que ça ne pourrait pas fonctionner de la même façon. D'ailleurs, je vais ouvrir un nouveau post sur le like.

    Je n'ai pas encore détaillé l'histoire du tableau excel sans excel mais je vais m'y plonger plus tard.

    Encore merci Pc75

    Bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/09/2012, 09h00
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo