Problème de lecture de données web
Résolu
Kuartz
Messages postés
852
Date d'inscription
Statut
Membre
Dernière intervention
-
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je sais ça paraît complètement incroyable, mais voilà, dans mon module ThisWorkbook, j'ai le code suivant :
La partie qui nous intéresse et qui plante est la suivante :
C'est ce code là qui plante, donc pour bien comprendre, en fait c'est un code qui va chercher des données sur le net. Ensuite des macros s'exécutent pour faire des calculs avec les données récoltées :
Sauf que (et c'est là que c'est fou), si je lance le fichier après l'avoir mis sur mon bureau, aucun problème, tout se fait parfaitement. Si je mets le fichier sur mon serveur et que je le lance, les données ne sont pas importées. Donc les calculs donnent 0 :) J'ai pensé à mettre un DoEvents avant de suivre le reste du code. Mais la machine plante et n'importe rien. J'ai la phrase "xxx : lecture des données..." à place du tableau. Une idée? :)
Merci d'avance.
Cordialement.
Je sais ça paraît complètement incroyable, mais voilà, dans mon module ThisWorkbook, j'ai le code suivant :
Private Sub Workbook_Open() Dim j As Integer, i As Integer On Error Resume Next For i = 1 To 3 Sheets(i).Visible = True Next i On Error GoTo 0 PARAMETRAGE_OUI = False With UserForm_Parametrage .Show 0 For i = 10 To 0 Step -1 DoEvents If PARAMETRAGE_OUI = True Then Exit Sub End If Application.Wait Now + TimeValue("00:00:01") If i >= 10 Then .Timer = "00:" & i Else .Timer = "00:0" & i End If .Repaint Next i End With Unload UserForm_Parametrage Application.DisplayAlerts = False For i = ThisWorkbook.Sheets.Count To 5 Step -1 Sheets(i).Delete Next i Application.DisplayAlerts = True Call Refresh Call MISE_EN_FORME Call Calculs_indexations_gasoil Call Creation_PDF Call EnvoiMail Sheets("IMAGES").Visible = False ThisWorkbook.Save Application.Quit End Sub
La partie qui nous intéresse et qui plante est la suivante :
Call Refresh
C'est ce code là qui plante, donc pour bien comprendre, en fait c'est un code qui va chercher des données sur le net. Ensuite des macros s'exécutent pour faire des calculs avec les données récoltées :
Sub Refresh() Dim sURL As String: sURL = "URL;http://www.cnr.fr/Indices-Statistiques/Espace-Gazole/Indicateurs-Gazole-France/Prix-CNR-gazole-cuve-moy.-mens#haut" ' ' Ne pas afficher les message d'Excel Application.DisplayAlerts = False ' En cas d'erreur (suppression requête) on continuer On Error Resume Next ' Avec la feuille With Sheets(1) ' Supprimer la requête .Cells.QueryTable.Delete ' Effacer les cellules .Cells.ClearContents ' Importer les données web With .QueryTables.Add(Connection:=sURL, Destination:=.Range("$A$1")) .Name = "Prix-CNR-gazole-cuve-moy.-mens#haut" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone ' La 4ème table celles des données qui nous intéressent .WebTables = "4" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=True End With End With Dim sURL2 As String: sURL2 = "URL;http://www.cnr.fr/Indices-Statistiques/Espace-Gazole/Indicateurs-Gazole-France/Prix-gazole-pompe-moy.-mens#haut" ' ' Ne pas afficher les message d'Excel Application.DisplayAlerts = False ' En cas d'erreur (suppression requête) on continuer On Error Resume Next ' Avec la feuille With Sheets(1) ' Importer les données web With .QueryTables.Add(Connection:=sURL2, Destination:=.Range("$R$1")) .Name = "Prix-gazole-pompe-moy.-mens#haut" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone ' La 4ème table celles des données qui nous intéressent .WebTables = "4" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=True End With End With End Sub
Sauf que (et c'est là que c'est fou), si je lance le fichier après l'avoir mis sur mon bureau, aucun problème, tout se fait parfaitement. Si je mets le fichier sur mon serveur et que je le lance, les données ne sont pas importées. Donc les calculs donnent 0 :) J'ai pensé à mettre un DoEvents avant de suivre le reste du code. Mais la machine plante et n'importe rien. J'ai la phrase "xxx : lecture des données..." à place du tableau. Une idée? :)
Merci d'avance.
Cordialement.
A voir également:
- Problème de lecture de données web
- Fuite données maif - Guide
- Web office - Guide
- Navigateur web - Guide
- Creation de site web - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
1 réponse
Cette petite ligne posait problème :
il faut la mettre en
Car sinon, cela permet aux données de s'actualiser en fond de tâche. Ce qui est une erreur, car la machine n'y parvient pas si d'autres procédures sont lancées ensuite.
Cordialement.
.Refresh BackgroundQuery:=True
il faut la mettre en
.Refresh BackgroundQuery:=False
Car sinon, cela permet aux données de s'actualiser en fond de tâche. Ce qui est une erreur, car la machine n'y parvient pas si d'autres procédures sont lancées ensuite.
Cordialement.