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 :

Propriété QueryTable.TextFileDecimalSeparator ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 893
    Par défaut Propriété QueryTable.TextFileDecimalSeparator ne fonctionne pas
    Bonjour,

    J’importe un fichier texte dans un classeur Excel et je n’arrive pas à définir la virgule comme séparateur décimal.

    Dans le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .TextFileDecimalSeparator = ","
    est ignoré et je ne comprends pas pourquoi. Tout le reste fonctionne correctement. Ai-je oublié quelque chose ?

    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
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Fichier_Importé, Destination:=Range("$A$1"))
            .Name = "blabla"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
                If Séparateur_Tabulation = True Then
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
                Else
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
                End If
            .TextFileCommaDelimiter = False         
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .TextFileDecimalSeparator = ","  
            .Refresh BackgroundQuery:=False
        End With
    Merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Daejung,

    J'imagine que le caractère au sein de ton fichier texte n'a pas le même code ASCII que celui que tu cherches.
    Ainsi je te propose dans un premier temps d'utiliser la fonction Asc() sur le caractère en question et de la chercher avec .TextFileDecimalSeparator = Chr(XX) dans ta macro dès que tu auras le résultat.

    N'hésite pas à me tenir au courant !

    Cordialement,
    Kimy

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 893
    Par défaut
    Merci je verrai cela au bureau demain mais je ne suis pas sûr de bien comprendre.

    Veux tu dire que .TextFileDecimalSeparator = Chr(XX) définit le caractère décimal que l'on veut remplacer (le point dans mon cas) ? Pour moi xx c'était ce que je voulais comme caractère décimal, donc une virgule à la plage du point qui se trouve dans le fichier.

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Daejung,

    J'ai écris vite et donc je me suis surement très mal exprimé.
    Je te propose de faire une toute petite macro pour voir quel est le code ASCII du caractère problématique en utilisant la méthode Asc().
    Quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub retour_ascii()
        MsgBox Asc("mon_caractère")
    End Sub
    Ceci te retournera une valeur numérique que tu pourras ainsi insérer dans ta macro grâce à la fonction "inverse" de Asc() qui est Chr().
    Ainsi, si tu exécutes .TextFileDecimalSeparator = Chr(62) ton séparateur sera le ">".

    C'est une piste, je ne sais pas si ça marchera.

    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 893
    Par défaut
    Oui mais ce n'est pas ce caractère, peut-être problématique, que je veux avoir comme séparateur décimal, mais une virgule. Je ne comprends pas pourquoi tu veux passer la valeur du séparateur dans le fichier dans TextFileDecimalSeparator


    Voir exemple donné par Microsoft ( https://msdn.microsoft.com/en-us/lib...ice.12%29.aspx):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Sheet1").QueryTables(1) _
        .TextFileDecimalSeparator = ","

Discussions similaires

  1. La propriété Appearance ne fonctionne pas pour un commandbutton
    Par ludoche dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/11/2007, 13h54
  2. ma propriété display:inline ne fonctionne pas
    Par Ekimasu dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/11/2007, 10h41
  3. La propriété Background-image ne fonctionne pas
    Par Gizmil dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/11/2007, 11h42
  4. La propriété Transparent de TImage ne fonctionne pas
    Par randriano dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/02/2007, 14h16

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