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 :

Importation page internet [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut Importation page internet
    Bonjour à toutes et à tous,

    Je viens de faire une macro me permettant de récupérer des données d'internet.

    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
    Sub D6006528()
    '
    Sheets("6006528").Cells.Clear
    '
        With Sheets("6006528").QueryTables.Add(Connection:= _
            "URL;http://webshop-grasdorf.de/Shop/Search.aspx?SearchTerms=6006528" _
            , Destination:=Sheets("6006528").Range("$A$1"))
            .Name = ""Search.aspx?SearchTerms=6006528_1""
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingNone
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
    End Sub
        End With
    Je préfère laisser le format de la page en "xlWebFormattingNone" car je préfère ce visuel.

    Je souhaite récupérer les données de plusieurs pages internet pour pouvoir plus aisément les analyser sur une seule page "Overview".

    Pour cela j'ai ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        compteur = 4
        For ligne = 1 To 499
        If Worksheets("6006528").Cells(ligne, 1) = "Produkt(e)Keine Sortierung" Then
                compteur = compteur + 1
                Sheets("Overview").Cells(compteur, 1) = Sheets("6006528").Cells(ligne + 2, 1)
        If compteur = "" Then Exit For
        End If
        Next
    1 J'ai un message d'erreur au niveau de la partie marquée en rouge. Que dois je faire?
    La même manip fonctionne dans un autre fichier excel. Mais avec un autre type de données

    2. Comment puis je "régler" le compteur pour qu'il s'arrête à la prochaine ligne vide? Je ne sais pas si "" fonctionne

    MERCI BEAUCOUP!
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Salut YayaN,

    Teste cette solution de fichier en PJ pour récupérer les données sur internet.
    Fichiers attachés Fichiers attachés

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par YayaN Voir le message
    1 J'ai un message d'erreur au niveau de la partie marquée en rouge. Que dois je faire?
    Il ne te semble pas judicieux d'indiquer de quel message il s'agit ?

    2. Comment puis je "régler" le compteur pour qu'il s'arrête à la prochaine ligne vide? Je ne sais pas si "" fonctionne
    Déjà, tu devrais te poser une question : est-ce que c'est compteur qui vérifie si les lignes sont vides ?
    Perso, je n'en ai pas l'impression.

    De plus, les lignes précédent indiquant qu'il s'agit d'une variable numérique, je ne vois pas comment il pourrait être égal à "".

  4. #4
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    Merci beaucoup nonesofar!! J'avoue que je suis sur le cul

    J'ai cependant tjrs un problème. En faisant la manip que je faisais avant, je me connectais tout d'abord à la page internet. Etant connecté, j'avais un visu sur les prix etc...
    Comment puis-je résoudre ce problème?

    MErci d'avance!

    Mehnir, merci pour tes remarques pertinentes.

    1. Mon message d'erreur est en allemand. Voilà pq je ne l'ai pas posté. Voir photo ci-jointe
    2. Tu as raison sur le fait qu'un compteur n'est pas fait pour cela, mais sur le coup j'ai tout bonnement "essayé"Nom : Unbenannt.PNG
Affichages : 189
Taille : 19,4 Ko

    J'espère avoir été plus clair

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Merci


    Pas tout compris lol quand tu dis
    Etant connecté, j'avais un visu sur les prix
    Tu parles de la même chose?

    Je souhaite récupérer les données de plusieurs pages internet pour pouvoir plus aisément les analyser sur une seule page "Overview".
    Avec ce code que j'ai fait tu peux faire que sur une page à la fois.

    Tu veux faire une boucle sur plusieurs pages?

  6. #6
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    En faisant mon importation de données, via "à partir du web", il faut tout d'abord que je me connecte au site en question.
    Puis je peux actualiser mes données.

    Avec ta macro, je récupère seulement les données "publiques" de la page internet.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par YayaN Voir le message
    1. Mon message d'erreur est en allemand. Voilà pq je ne l'ai pas posté. Voir photo ci-jointe
    A priori, je pense que le contenu de certaines de tes cellules doit être numérique et que VBA n'apprécie pas de comparer du numérique et du texte.
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("6006528").Cells(ligne, 1).Text = "Produkt(e)Keine Sortierung" Then

  8. #8
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    Merci Menhir!

    Tu as raison. Cela fonctionne avec Aurais-tu une idée pour que cela copie toutes les données jusqu'à la prochaine ligne vide?

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par YayaN Voir le message
    Aurais-tu une idée pour que cela copie toutes les données jusqu'à la prochaine ligne vide?
    Il faudrait que tu précises exactement ce que tu souhaites.

    Par exemple, ton Exit (j'espère que tu as changé le Sub en For) laisse penser que tu ne cherches qu'une seule ligne.
    Dans ce cas, ce ne serait pas une boucle qu'il faudrait utiliser mais une recherche avec un Find.

    Précise ton besoin.

  10. #10
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    Ok Mehnir.

    Donc en détail:
    J'ai une page "Overview" où je souhaite analyser les données de produits que je trouve sur les sites de revendeurs.

    J'ai donc une feuille excel par page internet. (Une quinzaine au total) Et je souhaite récupérer les données jusqu'à "« ‹ 1 › »"
    Nom : tracking.PNG
Affichages : 169
Taille : 18,5 Ko
    Mon idée finale est qu'en cliquant sur un bouton "update", toutes les données soient sur ma page "Overview"
    Nom : Overview.PNG
Affichages : 166
Taille : 13,3 Ko

    "F18" dans Dimension
    "Nike" dans Brand
    "Arsenal" dans Profil
    Le "HS" en A7 dans Sp (sinon Rien).
    "f88552" dans Ref
    "AS Fix" dans Tech.
    "1.898,90 €" dans Preis

    Avec encore un détail, je voudrais que les données d'une page importée, se chargent dans la prochaine ligne vide dans "Overview".

    Je suis assez clair? Dis moi si ce n'est pas le cas!!

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En supposant que ta page source s'appelle "Source", tu fais une boucle For to avec un Step 2 pour tenir compte du fait que tes données sont sur deux lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Lig As Long
    For Lig = 3 to Worksheets("Source").Range("A3").End(xlDown).Row Step 2
    La variable Lig donnera le numéro de ligne.
    Tu n'as plus qu'a faire des transferts de valeur cellule à cellule avec des Range.Value = Range.Value.

  12. #12
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    J'ai tenté ceci, mais cela ne résoud pas mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Makro1()
    '
    Dim derniereligne As Integer
     
    derniereligne = 3
        For ligne = 1 To 499
        If Worksheets("6006528").Cells(ligne, 1).Text = "Produkt(e)Keine Sortierung" Then
        Sheets("Overview").Cells(derniereligne + 1, 1) = Sheets("6006528").Cells(ligne + 2, 1)
        If derniereligne = Range("A:A").End(xlUp).Row Then Exit For
        End If
        Next
     
    End Sub
    Je vais essayer d'exprimer mon besoin plus clairement:

    J'ai une feuille "Overview" dans laquelle je veux réunir des informations que je récolte de différents sites internet.
    J'ai de ce fait 1 feuille excel par site internet. Mais le nombre de lignes de données n'est pas identique pour chaque site. J'ai simplement toujours "Produkt(e)Keine Sortierung" dans la cellule A78.

    J'ai par exemple sur la page du revendeur 6006528, dans la colonne A:
    Nom : 78.PNG
Affichages : 172
Taille : 17,3 Ko

    Je souhaite que les informations de ce tableau se copient de la façon suivante dans "Overview" (à partir de la ligne 4)
    "F18" dans Dimension
    "Nike" dans Brand
    "Arsenal" dans Profil
    Le "HS" dans Sp (sinon Rien).
    "f88552" dans Ref
    "AS Fix" dans Tech.
    "1.898,9 €" dans Preis

    Nom : Overview.PNG
Affichages : 142
Taille : 13,3 Ko
    Je souhaite créer une boucle indiquant, que je veux copier les données à partir de la ligne 78+2.
    Et que cette boucle s'arrête avant "« ‹ 1 › »"

    C'est faisable?
    Encore merci pour ton aide!!

  13. #13
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par YayaN Voir le message
    C'est faisable?
    Je t'ai indiqué dans mon précédent message comment faire mais, visiblement, tu ne sembles pas en tenir compte dans ton code.
    Je ne vais donc pas insister lourdement.
    Bonne chance.

  14. #14
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Septembre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 29
    Par défaut
    J'ai bien entendu tenu compte de ton code! Mais après plusieurs tentatives où je me suis planté, je essayé autre chose. Comme mon nombre de lignes est variable d'une feuille à l'autre et d'un mois à l'autre, je ne sais pas comment "adapter " le Range.Value = Range.Value.

    J'espère que je suis clair, car évidemment, j'avais pris compte de ton code.

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

Discussions similaires

  1. importation d'une photo sur page internet ftp://....
    Par thibeau67 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/05/2016, 11h29
  2. [XL-2007] importer un tableau d'une page internet
    Par bettegga dans le forum Excel
    Réponses: 2
    Dernier message: 21/02/2016, 16h03
  3. Titre d'une page Internet
    Par Ramses__ dans le forum Web & réseau
    Réponses: 4
    Dernier message: 29/09/2006, 11h51
  4. Ouvrir page internet en texte
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/07/2005, 18h18
  5. Peut-on créer une page internet via JBuilder?
    Par Xavier dans le forum JBuilder
    Réponses: 2
    Dernier message: 17/02/2005, 21h21

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