VBA Excel : page web et QueryTable

Résolu
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   -  
yg_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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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 = "@"
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Tu aurais également pu tester, simplement, en assignant une valeur ainsi:

        Cells.Clear
        [a5] = "1-14"
        Cells.NumberFormat = "@"
        [a6] = "1-14"

Tu aurais remarqué que cela n'avait rien à voir avec le fait que la source soit une page web.

0
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   18
 

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 ? 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention  
 

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

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

et ainsi?

.WebDisableDateRecognition = True
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention  
 

Avec mon fichier html de test, cela fonctionne en mettant simplement en format texte.

        Cells.Clear
        Cells.NumberFormat = "@"
        Set QT = ActiveSheet.QueryTables.Add(Connection:="URL;" & Url, _
       Destination:=Range("A1"))
        ' configurer la QueryTable...
        With QT
        .WebSelectionType = xlEntirePage '... pour sélectionner toute la page
        '.PreserveFormatting = False
        '.WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False  '... pour rafraîchir les données et les coller dans la feuille
        
un
<br>
1-14
<br>
trois
1