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 :

Automatisation VBA de la conversion tableau internet en tableau excel exploitable [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut Automatisation VBA de la conversion tableau internet en tableau excel exploitable
    Bonsoir, je viens vers vous car j'ai besoin que l'on me propose des pistes étant donné que j'ai fais le tour

    J'ai créé un fichier excel qui permet d'extraire d'internet un tableau (CAC40) qui se mettra à jour toutes les minutes voir moins. J'ai annulé cette actualisation pour le moment pour faciliter le travail sur le code sans être dérangé par des mises à jours. Le programme correspond au bouton 1 du fichier et il fonctionne.

    J'ai ensuite commencer à mettre des mises en formes conditionnelles sur certaines cellules (J2 K2 L2) en relation avec le tableau que j'ai importé sur internet. Cependant, je me suis rendu compte que on était en présence de . au lieu de virgule dans le tableau. J'ai donc manuellement changé les points en virgules avec l'option d'excel "Remplacer". Cela fonctionne

    Etape 1 : Je clique sur le bouton 1 (La case L2 est verte, ce qui n'est pas correct d'après mes conditions, c'est la case K2 qui devrait être jaune).
    Etape 2 : Je sélectionne la plage "B9:H48" puis me dirige dans accueil , Rechercher et sélectionner, Remplacer . par , et ok ( la case K2 devient jaune et la case L2 devient sans couleur).

    Mais mon but est d'automatiser cette tache pour l'actualisation toutes les minutes. J'ai donc fais un enregistrement macro que voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B9:H48").Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Je l'ai introduit à la suite de mon programme VBA (macro1 après extration du tableau), cependant je n’obtiens pas le même résultat ??? J'ai mis un ' devant pour le moment et reproduit le code dans la macro 2 associé au bouton 2 du fichier. Au final cliqué sur le bouton 1 puis sur le bouton 2. C'est la macro du bouton 2 qui ne fonctionne pas.

    Voilà les anomalies :

    - il me met parfois des espaces au lieu de la virgule
    - Même si il change le point en virgule (cellule G35) la forme conditionnel reste verte en L2 ET La case K2 ne devient pas jaune.
    - Rentrer manuellement la valeur 85,73 dans la case G35 et les choses cela fonctionne

    C'est perturbant

    Je met le fichier excel en pièce jointe pour une meilleur compréhension.

    Mon but : Automatiser la conversion que la plage G9:H48 et sans erreur dans le tableau.


    Je vous remercie d'avance, de mon côté je continu à chercher mais je serais ravi d'avoir un peu d'aide sur cette question. Si il y a besoin de plus de précisions, n'hésitez à me le dire.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Basiquement

    Mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B9:H48").Replace What:=".", Replacement:="."
    Et reviens pour l'explication

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut
    que dire à part merci, c'est basique en effet.

    C'est deux formules on le même effet et fonctionne, donc je prends la deuxième plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("B9:H48").Replace What:=".", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    Range("B9:H48").Replace What:=".", Replacement:="."
    Explication par déduction :

    ta formule qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B9:H48").Replace What:=".", Replacement:="."
    ma formule qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B9:H48").Replace What:=".", Replacement:=","
    La même formule, à la différence que de mon côté, je lui demande de remplacer le "." par ","

    Je pense que c'est une différence d'interprétation d'excel et de VBA sur le symbole ","

    Dans ton code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B9:H48").Replace What:=".", Replacement:="."
    , tu demandes en VBA de remplacer un . par un . dans la plage. Sur le tableau excel, cela se traduit par un remplacement des points par des virgules.

    Je ne sais pas si c'est la bonne explication, mais merci de me confirmer pour partir du forum un peu moins bête

    Merci encore pour ton aide

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Oui tu as vu juste
    tu demandes en VBA de remplacer un . par un . dans la plage. Sur le tableau excel, cela se traduit par un remplacement des points par des virgules le séparateur décimal
    Pour plus de clarté, les séparateur décimal de vba est toujours le point.

    Il faudra donc lire, remplacer les points par le séparateur décimal


    PS.

    Pour simplifier ton code
    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
    Sub Macro1()
     
    Application.ScreenUpdating = False
    With Feuil2
        .Range("A8:H48").Clear
        With .QueryTables.Add(Connection:="URL;https://www.abcbourse.com/marches/indice_cac40.aspx", Destination:=.Range("A8"))
            .Name = "indice_cac40"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingAll
            .WebTables = """tabQuotes"""
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
            .Delete
        End With
        .Parent.Connections(1).Delete
        With .Range("A8:H48")
            .Replace ".", "."
            .Borders.LineStyle = xlContinuous
        End With
    End With
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Ceci dit, Range("B9:H48").value=Range("B9:H48").value .
    C'est la même chose!

    Excel tient compte des paramètres régionaux vba non, Excel (. = .) vba (. = , ) séparateur décimale!

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut
    merci pour la simplification

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

Discussions similaires

  1. [VBA-E][débutant]conversion en string
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/02/2006, 14h39
  2. Réponses: 1
    Dernier message: 21/02/2006, 15h46
  3. Réponses: 5
    Dernier message: 24/10/2005, 15h03
  4. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  5. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55

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