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 :

Manipulation de string après import de données du web / pb chiffre format xx.xx vs xx,xx


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    gerant d'actif
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : gerant d'actif

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut Manipulation de string après import de données du web / pb chiffre format xx.xx vs xx,xx
    Bonjour,

    je récupère des données boursières et financières sur des pagez de zonebourse ou autre
    habituellement le code source est sous forme xx.xx mais pour cette donnée c'est du xx,xx

    du coup ma requête me renvoie une val par exemple pour danone 79 300 au lieu de 79.3
    comment faire ?

    en général je m'en sors en utilisant Replace ou Trim pour supprimer des espaces genant ou encore Val mais là je suis sec


    voici ma requête
    avec url =view-source:https://www.zonebourse.com/DANONE-4634/fondamentaux/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub devisevaleurref()
     
    Dim i%, k%, URL$
    Set WS = ThisWorkbook.Worksheets("COT_ACT")
    'compte le nb de lignes et les met dans K
    k = WS.Cells(Rows.Count, [REF].Column).End(xlUp).Row
               'num col         ici!v! pour effacer avant copie des nouvelles valeurs
    WS.Range(WS.Cells(3, 15), WS.Cells(k, 15)).Clear
     
     
            '<td style="text-align: right; padding: 7px;">52,950</td>
    avant = "<td style=""text-align: right; padding: 7px;"">"
    apres = "</td>"
     
    ' de la ligne 3 jusquà k
    For i = 3 To k
        DoEvents
        URL = Cells(i, [WWW].Column).Value
        Application.StatusBar = "Mise à jour cour ref  …"
        On Error Resume Next
        With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", URL, False
            .send
            code = .responsetext
            ' mettre numero de colonne ici!v!                                                !v! car 57 eme apparition..
            If .Status = 200 Then Cells(i, 16).Value = Split(Split(code, avant)(57), apres)(0)
            .FormulaLocal
     
        End With
     
    Next
    Application.StatusBar = False
     'affiche la date et l'heure dans
    Range("p2").Value = Day(Now) & "/" & Month(Now) & " à " & Hour(Now) & ":" & Minute(Now)
     
     
    End Sub
    merci

  2. #2
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    Salut,
    si c'est pour récupérer les données d'un tableau en formatant les nombres, on peut faire quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Fetch_TableData()
        Dim http As New XMLHTTP60, html As New HTMLDocument
        Dim posts As Object, post As Object, elem As Object
        Dim row, col, destRow, destCol As Long
        With http
            .Open "GET", "https://www.zonebourse.com/DANONE-4634/fondamentaux/", False
            .send
            html.body.innerHTML = .responseText
        End With
        Set posts = html.getElementsByClassName("BordCollapseYear")(0)
        For Each post In posts.Rows
          If row <> 0 And row <> 12 Then
            For Each elem In post.Cells
              If col <> 0 Then
                destCol = col: col = col + 1
                Select Case row
                  Case 2, 3, 4, 5, 6, 8, 9, 11
                       Cells(destRow, destCol).NumberFormat = "#.00": Cells(destRow, destCol) = CSng(elem.innerText)
                  Case Else
                       Cells(destRow, destCol).NumberFormat = "@": Cells(destRow, destCol) = elem.innerText
                End Select
              Else
                col = col + 1
              End If
            Next elem
          End If
          col = 0
          row = row + 1: destRow = row
        Next post
    End Sub
    Nom : TableauBourseDanone.PNG
Affichages : 181
Taille : 18,1 Ko

    Nullosse

  3. #3
    Candidat au Club
    Homme Profil pro
    gerant d'actif
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : gerant d'actif

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    ahh c'est interessant je n' y avais pas pensé comme ça.
    non je ne voulais pas reproduire le tableau mais récupérer une valeur
    en l’occurrence celle du cours de référence est codée 73,9 alors que les valeurs des autres lignes plus haut sont codée avec un XX.X
    du coup quand je recupere 73,9 mon excel (qui est une version anglaise meme si mon ordi tourne en français) me restitue 739

    j'ai essayé ta proposition mais je n'arrive pas à la faire fonctionner
    ça bute sur http as new XMLHTTP60

    => compile error user definef type not defined ?

  4. #4
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    Salut,
    il faut que les références Microsoft XML V6.0 et Microsoft HTML Object Library soient cochées dans le menu Outils/Références de VBA :

    Nom : vbaRefhtml.PNG
Affichages : 172
Taille : 23,0 Ko


    Nullosse

Discussions similaires

  1. [XL-2010] Manipulation de string après import de données du web
    Par Ludo5550 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/04/2020, 15h49
  2. [AC-2007] Connexion à Share Point après importation de données Excel
    Par Nico820 dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/03/2018, 15h05
  3. [XL-2007] Créer une fonction pour importer une donnée du web
    Par tomatotep dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/02/2016, 18h41
  4. Manipulation de SQLITE , import de donnée avec parametre CSV
    Par IPreferCSharp dans le forum SQLite
    Réponses: 0
    Dernier message: 13/10/2013, 22h43
  5. Réponses: 16
    Dernier message: 07/05/2009, 13h23

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