VBA Excel : page web et QueryTable
Résoluyg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Le bout de code suivant
' Copier la page web dans "Feuil2"
Sheets("Feuil2").Select
Cells.Clear
' ajouter une QueryTable
Set QT = ActiveSheet.QueryTables.Add(Connection:="URL;" & URL,
Destination:=Range("A1"))
' configurer la QueryTable...
With QT
.WebSelectionType = xlEntirePage '... pour sélectionner toute la page
.Refresh BackgroundQuery:=False '... pour rafraîchir les données et les coller dans la feuille
End With
' libérer l'objet QueryTable
Set QT = Nothing
......
copie une page web entière dans la Feuill2 à partir de A1 et il fonctionne de façon satisfaisante pour mes besoins. Cependant, certaines zones de la page web contiennent des indications de la forme 1-14 (par exemple) et sont importées dans les cellules Excel par une date du type janv-14 ... Est-il possible d'éviter cet écueils et retrouver 1-14 ?
Windows / Chrome 124.0.0.0
Windows / Chrome 124.0.0.0
1 réponse
bonjour,
Tu peux voir que tu as le même comportement si tu entres "1-14" à la main dans une cellule.
Pour éviter que Excel n'interprète les données, il faut préalablement mettre les cellules en format "Texte".
Cells.Clear Cells.NumberFormat = "@"
Tu aurais également pu tester, simplement, en assignant une valeur ainsi:
Tu aurais remarqué que cela n'avait rien à voir avec le fait que la source soit une page web.
Merci pour ta réponse!
1) Si je mets les cellules en format texte avant le set Qt, ça ne change rien
2) si je le fait après, le janv-14 se transforme évidemment en 41640 ...
N'existe t-il pas un paramètre de configuration de la QT ?
Je pense qu'il y a un paramètre qui permet de préserver le format des cellules.
Ce serait plutôt un paramètre accessible via la destination, pas via la connexion.
Je suggère que tu testes à la main pour trouver ce paramètre, puis que tu automatises si nécessaire (le VBA pourrait simplement utiliser un paramètre existant).
https://stackoverflow.com/questions/56678825/formating-change-in-excel-when-refresh-data-source-connectred-with-sql-server
et ainsi?
Avec mon fichier html de test, cela fonctionne en mettant simplement en format texte.