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 :

Empécher l'interprétation en date [XL-2003]


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
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut Empécher l'interprétation en date
    Bonjour,

    Après de nombreuses recherches infructueuses, je me tourne vers vous.
    Je vous explique mon problème :
    Depuis le code vba j'ouvre un fichier texte plus ou moins important de type :
    txt;txt;1-2-3;txt;1-2;txt
    2-5;txt;txt;txt;3-4-5;txt;txt
    txt;txt,txt;txt;txt
    ...

    pour cela j'utilise un OpenText(), le problème c'est que excel me converti automatiquement les 1-2-3 en date...

    J'ai essayé tout un tas de truc comme les mettre entre " " ou ' ', en mettant tous les paramètres qui vont bien à l'opentext mais rien à faire toujours converti en date.
    J'ai essayé un range.numberformat qui n'a rien donné non plus car déjà interprété en date avant de prendre en compte le numberformat texte.

    Voilà, donc savez vous comment résoudre ça, svp?
    (j'espère que je n'ai rien loupé en faisant mais recherche)

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Par défaut
    Si c'est compatible avec ton code tu peux forcer la chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.NumberFormat = "@"
    ActiveCell.Value = "1-2-3"

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    Merci pour ta réponse mais ça ne peu pas aller dans le sens ou ce 1-2-3 n'est pas une valeur fixe, ces chiffres correspondent à des numéros de réponses donc je peux avoir du 1-2; 2-3; 1-3; 1-2-5; 3-4-5; etc
    De plus le format de mon fichier n'est pas fixe au niveau du nombre de lignes et selon les cas pas forcément le même nombre de colonnes d'un fichier à un autre :/

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Par défaut
    Ce n'était qu'un exemple pour te montrer qu'en changeant le format de la cellule avant de rentrer la valeur, ça ne fait pas la conversion automatique en date.

    Donc pour ton cas, si tu sais qu'une colonne va contenir des donnés du type 1-2-3, formate-là en texte juste avant et ça fonctionnera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(num_colonne).NumberFormat = "@"

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il te faut forcer le format avant d'entrer la valeur :
    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
     
    Sub ForcerFormatTexte()
     
        Dim Tbl
        Dim Ligne As String
        Dim I As Integer
        Dim J As Integer
     
            'adapter le chemin et nom du fichier
            Open "D:\Test.txt" For Input As #1
     
            Do While Not EOF(1)
     
                Line Input #1, Ligne
     
                    'splite dans un tableau
                    Tbl = Split(Ligne, ";")
     
                    'inscrit les valeurs dans les cellules
                     J = J + 1
     
                   For I = 0 To UBound(Tbl)
     
                        Cells(J, I + 1).NumberFormat = "@"
                        Cells(J, I + 1) = Tbl(I)
     
                    Next I
     
            Loop
     
            Close #1
     
        Erase Tbl
     
    End Sub
    Hervé.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    Ok merci pour vos réponses.
    Et merci Hervé, mais le problème avec ta solution c'est que c'est du cellule par cellule et ça prendra beaucoup trop de temps :-/

    Mais je vais voir ce que je peux faire, au pire il faudra que je prenne mon mal en patiente et voir pour bon gros fieldinfo dans le opentext

    Ya vraiment rien à faire au niveau du fichier texte pour que ça ne soit pas interprété et qui ne modifierai pas les données (qui seront réutilisées par la suite), donc pas d'espace ou de " ' " devant ma chaine 1-2-3

    Ou même dans les paramètres d'excel une option à supprimer pour pas qu'il calcul ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Par défaut
    J'avais pas fait attention dans ton premier post que tu utilisais la fonction intégrée d'Excel pour importer tes données...du coup je vois 2 issues distinctes à ton problème:

    1°/ Si tes fichiers ont un nombre fixe de colonnes, tu peux te servir de l'argument FieldInfo (à moins qu'il soit possible de définir un tableau fieldinfo dont la première dimension est plus grande que le nombre de colonnes de ton fichier, auquel cas il suffit de voir grand...).
    Cf. ce que dit l'aide à ce propos:
    FieldInfo Argument xlColumnDataType facultatif. Tableau contenant des informations de distribution pour des colonnes de données individuelles. L'interprétation dépend de la valeur de DataType. Lorsque les données sont séparées, cet argument est un tableau de tableaux à deux éléments, qui indiquent les options de conversion pour une colonne particulière. Le premier élément est le numéro de la colonne (base 1) et le deuxième élément est l'une des constantes XlColumnDataType indiquant comment la colonne est distribuée.
    En déclrant que XlColumnDataType vaut xlTextFormat pour toutes les colonnes, ça devrait fonctionner. Revers de la médaille, tu ne pourrais pas faire d'opérations directement sur tes colonnes sans en changer le 'NumberFormat'.


    2°/ Tu codes l'import de tes données cellule par cellule en utilisant des objets TextStream pour lire ton fichier de données. C'est plus long à faire mais au moins tu pourras paramétrer le comportement comme tu l'entends.


    A mon avis, le plus adapté serait de faire un mélange des deux: lire la première ligne de ton fichier en utilisant un TextStream pour déterminer le type de chaque colonne, et définir derrière ton tableau de FieldInfo en forçant les colonnes du style 1-2-3 au format 'xlTextFormat'.

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

Discussions similaires

  1. Empêcher l'interprétation de code dans une chaîne
    Par Yalta85 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/12/2010, 00h34
  2. Empécher l'interprétation de %3F
    Par Igarpoor dans le forum Apache
    Réponses: 1
    Dernier message: 14/07/2009, 17h18
  3. [CSV] Montant dans un CSV interprété en date
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 14h14
  4. Pb d'interprétation de date dans requête
    Par KonTiKI dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/07/2008, 17h48
  5. [SQL-Server] Différence d'interprétation de date en PHP par rapport à ASP sur SQLServer
    Par berceker united dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/06/2006, 16h28

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