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 :

Guillemets intempestifs à cause d'une virgule [XL-97]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut Guillemets intempestifs à cause d'une virgule
    Bonjour,

    J'ai un problème avec ma macro Excel en VBA :

    Globalement, cette macro prend un fichier .txt en entrée, effectue divers traitements et créé un nouveau fichier .txt en sortie.

    Une des données en entrée est un champ texte. Lorsque ce champ contient une virgule, le fichier de sortie encadre la phrase de guillemets.
    Cela est visible lorsque j'ouvre le fichier sous .txt.

    J'utilise :
    ActiveWorkbook.SaveAs Temp, FileFormat:=xlText


    j'ai lu qu'utiliser :
    ActiveWorkbook.SaveAs Temp, FileFormat:=xlTextPrinter


    pouvait aider mais pas dans mon cas, car cela enlève bien les guillemets intempestifs MAIS en ouvrant le fichier sous Excel, je perds toutes mes colonnes pour une colonne unique...

    Auriez vous une idée pour dépasser ce problème ? Supprimer ou remplacer la virgule n'est pas une option.

    Merci d'avance,

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Mets la macro suivante dans un classeur, affiche le fichier texte dans Excel et exécute la macro :

    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
    Sub test()
        Dim Enrgt As String, C As Range, Temp As String
        Temp = "C:\Users\Daniel\SkyDrive\mpfe\temp4.txt"
        Close #1
        Open Temp For Output As #1
        For Each C In Range([A1], Cells(Rows.Count, 1).End(xlUp))
            Enrgt = ""
            For i = 1 To Cells(C.Row, Columns.Count).End(xlToLeft).Column
                Enrgt = Enrgt & Cells(C.Row, i) & vbTab
            Next i
            Enrgt = Left(Enrgt, Len(Enrgt) - 1)
            Print #1, Enrgt
        Next C
        Close #1
    End Sub
    Remplace le nom et le chemin du fichier texte.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut
    Merci.
    J'ai l'impression que ce code va supprimer tous les guillemets de mon fichier non ?
    Si c'est le cas, ce n'est pas ce que je souhaite.

    Et en imaginant que cela fonctionne, puis je appeler cette méthode après avoir écrit dans le fichier de sortie ?

    Merci.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La macro ne va supprimer aucun guillemet. Une fois que ton fichier texte est ouvert dans Excel, apporte-lui les modifications nécessaires et exécute la macro quand tu veux le sauvegarder.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut
    Dans ma macro principale, juste avant d'enregistrer mon fichier de sortie au format .TXT, j'appelle ta macro test, avec en paramètre, la chaine de caractère indiquant le chemin du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test (Temp)
    ActiveWorkbook.SaveAs Temp, FileFormat:=xlText
    cela ne change pas la fait que lorsque j'ouvre le fichier TXT avec le bloc note, j'ai toujours mes guillemets intempestifs lorsque ma chaine de caractère contient une virgule.

    J'ai bien vérifié que la macro test() était appelée, avec le bon paramètre.

    Peut-être que j'ordonne mal les appels ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu n'as pas à exécuter cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Temp, FileFormat:=xlText
    Lorsque la macro est exécutée, le fichier texte est créé et fermé.

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

Discussions similaires

  1. [Nombre]formater le nombre de décimal après une virgule.
    Par PascalCmoa dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 09/03/2007, 11h40
  2. Float avec une virgule ?!
    Par yan dans le forum C++
    Réponses: 3
    Dernier message: 23/11/2005, 19h21
  3. [Oracle 9.1] Plantage SQL+ à cause d'une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 8
    Dernier message: 04/10/2005, 16h08
  4. Réponses: 3
    Dernier message: 17/08/2005, 18h27
  5. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 11h53

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