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 :

import d'une table d'une page web : format Date


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut import d'une table d'une page web : format Date
    Bonsoir,
    Qui pourrait m'aider...SVP, j'ai essayé sur d'autres forums...et je n'ai pas eu de réponses
    J'utilise cette macro pour importer une table d'une page Web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Htable = maPageHtml.getElementsByTagName("table") 'objet type table
    Set maTable = Htable(0) 'premier tableau dans la page Web
    For i = 1 To maTable.Rows.Length 'boucle sur toutes les lignes du tableau
    For j = 1 To maTable.Rows(i - 1).Cells.Length 'boucle sur les cellules dans chaque ligne
    Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
    Next j
    Next iJe laisse un fichier exemple.zip qui contient le fichier excel test.xls (nom de la macro
    En fait l'importation de la table provenant de la page web produit des erreurs de dates. On remarque que sur la Feuill1 les dates de la colonne A contiennent 02/10/2008 alors que cela devrait être 10/02/2008, idem pour 02/05/2008 au lieu de 05/02/2008...alors que toutes les autres dates importées sont correctes!
    Je cherche le problème...Si quelqu'un pouvait m'éclairer!
    Je laisse un fichier exemple.zip qui contient le fichier excel test.xls (nom de la macro testdate) et le fichier testdate.htm à placer sous C:\
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Je pense pouvoir dire pourquoi mais je n'ai pas de solution a te proposer pour résoudre ton problème.
    Je pense que ton problème est le suivant, lorsque tu rajoute une valeur dans une case Excel interprète le type de donnée pour savoir s'il s'agit d'un nombre, d'une chaine ou d'une date, pour le cas des date visiblement excel "favorise" le format MM/JJ/AA, dans ton cas les 1ere dates sont passées dans le format JJ/MM/AA uniquement par ce que 17 ne peut être un moi valide, ta date est donc stocké comme texte (tu as donc bien la forme que tu souhaite) mais pour les autre date 10 est a moi valide, donc excel le transtype en date (MM/JJ/AA).
    Peut être en contrôlant si la donnée est une date et en la formatant comme tu le souhaite. (IsDate et CDate)

    Essais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If IsDate(maTable.Rows(i - 1).Cells(j - 1).innerText) Then
            Cells(i, j) = CDate(maTable.Rows(i - 1).Cells(j - 1).innerText)
        Else
            Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
        End If
    Je n'ai pas pu tester, des que je modifie le code la macro se plante sur Htable(0) en me disant que la variable est pas définie ............., alors que si je la lance dés le début sans modifier les ligne que je te propose ça fonctionne ... je crois que je vais aller me coucher tiens...


    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Merci infiniment Qwazerty...ça fonctionne nickel, ça provient bien du format ou non Texte dans l'importation (histoire du mm/jj/aa)
    Donc il faut contrôler effectivement si la donnée importée est de format date ou texte et corriger en fonction!
    J'ai rajouter ton code dans ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set maPageHtml = ie.document
    Set Htable = maPageHtml.getElementsByTagName("table") 'objet type table
    Set maTable = Htable(0) 'premier tableau dans la page Web
    For i = 1 To maTable.Rows.Length 'boucle sur toutes les lignes du tableau
    For j = 1 To maTable.Rows(i - 1).Cells.Length 'boucle sur les cellules dans chaque ligne
    Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
    If IsDate(maTable.Rows(i - 1).Cells(j - 1).innerText) Then
            Cells(i, j) = CDate(maTable.Rows(i - 1).Cells(j - 1).innerText)
        Else
            Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
        End If
    Next j
    Next i

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

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