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

Macros et VBA Excel Discussion :

Multi-extraction de valeurs dans un même code source HTML ? [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Points : 52
    Points
    52
    Par défaut Multi-extraction de valeurs dans un même code source HTML ?
    Bonjour et bonne année à tous !

    J'ai des 10 références dans ma colonne A d'excel, qui se retrouvent dans 10 arbres (product) dans un seul fichier, obtenu par requête sur un serveur

    Je veux mettre dans ma colonne B, à côté de chaque référence, la valeur en orange

    Je rajouterai que les arbres ne s'affichent pas dans l'ordre des références de la colonne A.

    Je connais la méthode de Patrick avec le "getcodesource" et les "split" mais ici c'est beaucoup plus complexe pour mon petit niveau de VBA, car il y a plusieurs valeurs à extraire dans le même code en ciblant dedans mes références bleues.

    Merci beaucoup !

    Nom : 02.jpg
Affichages : 160
Taille : 206,4 Ko

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonjour dan

    d'après la capture d'écran sa semble être du XML et non du html
    cela dit il y a un object similaire a l'object xmlhttp pour le XML
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour, bonjour !

    Si le fichier correspond bien à la capture écran (dommage de ne pas l'avoir joint !),
    il suffit d'un Split ou deux pour extraire la valeur, à la portée d'un débutant ayant lu la méthode de Patrick !



    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Points : 52
    Points
    52
    Par défaut
    Merci pour votre intérêt

    Tout a fait Patrick c'est du XML et j'utilise le "getcodesource" comme pour un fichier HTML, ça marche à l'identique.

    Actuellement je dois faire une requête sur le serveur concerné pour chaque référence, alors que je peux faire une seule requête pour toutes mes références en même temps.

    Mon problème Marc est pour boucler dans le même fichier, plusieurs valeurs orange à extraire en ciblant mes références bleues.

    Je suis perdu, peut être que je n'utilise pas les bons termes pour essayer de me faire comprendre, je m'excuse si cela est le cas.

    Merci encore

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    En dehors de la pléthore de tutoriels dédiés au XML,
    même pour les références en bleu cela ne change rien : un Split (voire deux) fait l'affaire …





    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Points : 52
    Points
    52
    Par défaut
    J'ai regardé dans tout les tutos possibles et fais des recherches google pendant des heures, et je n'ai pas trouvé précisément ce que je cherchais.

    Avez vous le code d'une boucle qui extrait dans un même fichier HTML ou XML, la valeur souhaitait pour chaque références de ma colonne A?

    Merci

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    En fait c'est du sur mesure selon les balises et la structure exacte du fichier source !

    Il suffirait par exemple de juste commencer par effectuer un Split sur la balise ouvrante
    recherchée puis de boucler à partir de l'indice 1 de la variable tableau ainsi générée.

    Pour séparer l'excédent par indice, soit utiliser une autre fonction VBA de texte soit un autre Split
    sur la balise fermante et, à partir de l'excédent séparé, extraire la donnée de l'autre balise …

    Et pour le XML, rien que sur ce site il y a beaucoup de tutoriels !

    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Points : 52
    Points
    52
    Par défaut
    Oui tu as tout a fait raison Marc, merci de ton aide. C'était si simple en fait, mais comme je découvre la logique de programmation, j'ai du mal a totalement imaginer ce qui est possible de faire et comment.

    Donc j'ai réussi en mettant dans une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    valeur = Split(Split(code, "<productid>" & C)(1), "</amount>")(0)
     
    C.Offset(0, 1) = Split(Split(valeur, "<amount>")(1), "")(0)

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Félicitations !

    J'avais préparé une démonstration illustrant mon précédent message, code à tester dans un nouveau classeur :

    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
    Sub DemoSplit2Balises()
        T$ = "[Véhicule]Voiture[Marque]Alfa Romeo[/Marque][Couleur]Rouge[/Couleur][Modèle]Giuletta[/Modèle][Année]2012[/Année][/Véhicule]"
         T = T & "[Véhicule]Voiture[Marque]BMW[/Marque][Couleur]Silver[/Couleur][Modèle]120D[/Modèle][Année]2013[/Année][/Véhicule]"
         T = T & "[Véhicule]Voiture[Marque]Citroën[/Marque][Couleur]Marron[/Couleur][Modèle]DS4[/Modèle][Année]2014[/Année][/Véhicule]"
     
        SP = Split(T, "[Marque]")
        ReDim VA$(1 To UBound(SP), 1 To 2)
     
        For R& = 1 To UBound(SP)
                  MQ = Split(SP(R), "[/Marque]")
            VA(R, 1) = MQ(0)
            VA(R, 2) = Split(Split(MQ(1), "[Modèle]")(1), "[/")(0)
        Next
     
        Feuil1.[B2:C2].Resize(UBound(VA)).Value = VA
    End Sub
    Une méthode puissante d'extraction mais un peu plus difficile à appréhender : Les Expressions Rationnelles appliquées en VBA
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. Plusieurs valeurs dans un même champ
    Par fidecourt dans le forum Outils
    Réponses: 2
    Dernier message: 30/01/2013, 00h03
  2. Réponses: 2
    Dernier message: 16/05/2008, 14h43
  3. Réponses: 6
    Dernier message: 08/04/2008, 13h17
  4. [Configuration] Valeurs différentes pour même code sur 2 serveurs
    Par Xris dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 12/02/2007, 01h40
  5. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h54

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