Accélérer l'importation de données Web

Chris57

XLDnaute Occasionnel
Bonjour,

pour mon travail j'ai réalisé un fichier Excel 2007 qui importe sur 2 feuilles différentes 2 pages Web.
Se seul problème est que l'actualisation des données est plutôt lente, et comme elle doit se faire très régulièrement (tous les 1/4 d'heure) elle gène l'execution de certaines macros.

A savoir que ce que j'importe n'est pas consulté sous la forme mais récupérer vers une autre feuille pour traitement.
Aussi je ne m'interresse qu'à une petite partie des éléments de la feuille (un tableau de valeurs).

Y a t'il possibilité d'accélérer l'actualisation des données, en réduisant des propriétés ?
Peut-on n'importer qu'une partie d'une page Web ?

meci d'avance
 

Softmama

XLDnaute Accro
Re : Accélérer l'importation de données Web

Bonjour,

J'aurais besoin de plus de précisions pour t'apporter un début de réponse. Tu dis que ta macro 'importe' des données web... Le fait-elle par l'ouverture d'IE, par une requête, par des API... ? Il serait utile pour optimiser la durée de mise à jour de tes données de déjà savoir comment ta macro fonctionne. Du coup, rien ne vaut un petit fichier avec ta macro dedans pour qu'on se rende bien compte de ce qui te gêne.

A te lire
 

Chris57

XLDnaute Occasionnel
Re : Accélérer l'importation de données Web

Bonjour,

j'ai été sur d'autres progets entre temps, mais maintenant je peux revenir sur celui-ci.

Effectivement c'est une requête que je met à jour à travers une macro :
Selection.QueryTable.Refresh BackgroundQuery:=False


Le problème est que ce classeur contient des dizaines de macros qui s'activent pour la plupart à certaines heures. Ce fichier tourne en permanence sur un PC réservé à ça.
Impossible de fournir ce fichier car bien trop gros et surtout car il contient des données de type confidentielles...
 
Dernière édition:

BrunoM45

XLDnaute Barbatruc
Re : Accélérer l'importation de données Web

Salut Chris57

Tout dépend :
- du temps de réponse du site
- de la quantité de données à récupérer
- du débit de la ligne ADSL

Après tu peux essayer de désactier le calcul automatique le temps de ta requête
Code:
Application.Calculation = xlCalculationManual
' ... ta requète web ...
Application.Calculation = xlCalculationAutomatic

A+
 

Chris57

XLDnaute Occasionnel
Re : Accélérer l'importation de données Web

Malheureusement je n'y gagne rien de cette manière. J'ai tenté ceci :
Code:
Sub majDONNEESinternet()
    ' Mise à jour des données Internet
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

                Sheets("Tendances").Select
                Range("A1").Select
                Selection.QueryTable.Refresh BackgroundQuery:=False
                Sheets("Ecarts Prix").Select
                Range("A1").Select
                Selection.QueryTable.Refresh BackgroundQuery:=False
    Application.Calculation = xlCalculationAutomatic
    
End Sub

mais la durée est toujours la même...

La réponse du site est correcte, la connexion internet moyenne (réseau d'entreprise) mais la page de données comporte peu de chose, essentiellement du texte et des chiffres (environ 130 lignes sur 6 colonnes).

Je récupère les info par requête sans mise en page ou mise en forme, le plus simplement possible.


N'existe t'il pas un moyen de récupérer qu'une partie des infos (ce sont seulement les valeurs qui m'interressent) ?
Ou y a t'il au autre moyen que la requête ?
 

kiki29

XLDnaute Barbatruc
Re : Accélérer l'importation de données Web

Salut,initialement la PJ avait été créée dans ce but : accélérer l'import de données web et sauvegarde au format texte , sans aucun doute à adapter à ton contexte
 

Pièces jointes

  • Web2Txt.zip
    10.1 KB · Affichages: 101
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : Accélérer l'importation de données Web

Salut,remplacer WriteFile par
Code:
Private Sub Write2Sheet(sNomFeuille, Chaine)
Dim Ar() As String, i As Long
Dim Sep As String

    Sep = vbCrLf
    Ar = Split(Chaine, Sep)
    With Worksheets(sNomFeuille)
        .Activate
        .Cells.Clear
        For i = LBound(Ar) To UBound(Ar)
            .Cells(i + 1, 1) = Ar(i)
        Next i
    End With
End Sub

Cela sera également sans doute à adapter à ton contexte
 
Dernière édition:

klin89

XLDnaute Impliqué
Bonsoir à tous,

Une idée : on pourrait suivre le cheminement de ce fil.

https://www.excel-downloads.com/threads/vba-extraire-les-5-caracteres-suivant-8-tirets.139423/

Ici Cibleo n'a pas utilisé de requête web, les tables ne s'affichaient pas.

Il a contourné le problème en utilisant une macro de MichelXLd qui lui permet d'importer le contenu d'une page Web dans une seule cellule.

Dans le fichier de Cibleo, le contenu de la page web importée est en C1.
Restait à savoir, ce qu'il voulait extraire de cette page Web.
C'est l'objet de sa discussion.
Staple1600 est parvenu à extraire les éléments souhaités. (Voir sa macro)

Pour parvenir à tes fins, il faut suivre ce raisonnement.

Connaître le contenu de ta page Web, analyser la disposition des éléments souhaités et les extraire.
C'est sûrement faisable.

Klin89
 

klin89

XLDnaute Impliqué

Chris57

XLDnaute Occasionnel
Re : Accélérer l'importation de données Web

Salut et merci pour ton aide !

J'ai commencé à tester la seconde solution avec la macro de MichelXld.
J'ai adapté à mon cas et ça marche plutôt pas mal. Seulement voilà, les valeurs sont difficilement récupérables, car elle se collent les unes aux autres (fichier joint):

Au lieu d'obtenir ceci :
00h00 - 00h30 Hausse 65.09 73.5 41.2 0
j'ai ceci :
00h00 - 00h30 Hausse65.0973.541.20

difficile de récupérer les valeurs à partir de ça !!


Par ailleurs j'ai pas l'impression que ce soit plus rapide qu'une actualisation de requête, mais j'ai l'impression que excel n'est pas bloqué durant le temps d'attente, qui n'est pas le cas pour une requête...
Donc ça pourrait être une solution.


En attendant je vais revenir sur l'autre méthode que tu m'as proposé plus haut et faire quelques test.



[EDIT] j'ai retenté la première méthode, mais elle semble plus lente. De plus le résulat est le même que ci-dessus.
 

Pièces jointes

  • recupVALEURSnet.zip
    16.9 KB · Affichages: 61
Dernière édition:

klin89

XLDnaute Impliqué
Re Chris57,

Apparemment, tu es parvenu à importer le contenu de ta page web dans une cellule avec la macro de MichelXld.
Après réflexion, j'ai un doute sur ce que peut contenir une cellule quand tu énonces ceci :

la page de données comporte peu de chose, essentiellement du texte et des chiffres (environ 130 lignes sur 6 colonnes).

Je ne peux pas ouvrir ton fichier au format xlsm.
Je ne connais pas la disposition des éléments à extraire.
Quelles chaines de caractères veux-tu récupérer ?
Quel volume de données cela implique ?

Je fais peut-être fausse route, si la quantité de données à extraire est importante :cool:
La requête web est peut-être plus pertinente.

Ouvre un autre post autre titre plus évocateur avec un fichier au format xls.
Sur le forum, il y a des As de l'extraction, que tes données soit collées ou pas.

Je pense que cela doit faire l'objet d'une autre discussion.

Klin89

Ps : As tu essayé ceci : Remplace InnerText par InnerHTML comme indiqué par MichelXld
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
299 702
Messages
1 978 590
Membres
206 298
dernier inscrit
yannick451