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 :

Export de données ds un fichier texte ds un format rigide [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
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut Export de données ds un fichier texte ds un format rigide
    Bonjour à tous,

    Excel me sert de "pré-processeur" pour qu'il puisse générer des fichiers txt servant d'entrée à des exécutables Fortran. Dans ce contexte, j'ai le problème suivant.

    Mes lignes contiennent 4 données dont les "Value" ont la tête suivante :
    76.3356391348335_318.15_10_0.00176414813983959

    Dans ma feuille de calcul, je mets ces "Value" sous le format suivant (tout est fait par macro) :
    76.336_318.15_10.000_0.00176425

    Je souhaite retrouver ce format lorsque j'exporte cette feuille de calcul vers un fichier txt, mais ma macro d'export, qui fait appel à la librairie Microsoft Scripting Runtime, ne me permet pas de formater mes données comme voulu et je n'obtiens que les lignes suivantes :
    76.3356391348335_318.15_10_1.76414813983959E-3

    alors que je voudrais avoir :
    76.336_318.15_10.000_0.00176425
    tout en pouvant jouer à ma guise sur le nombre d'espaces séparant les valeurs.

    Merci énormément pour toute l'aide que vous pourrez m'apporter.
    Gautier

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Tu ne pourrais pas expliquer comment tu inscrit ces données dans le fichier ?
    Quel code tu emploi ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    Merci d'avoir prêté attention à ma question.
    Voilà mon code (option Explicit) :
    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 test_export_donnees()
     
    'Déclaration de la feuille, de l'Objet et du Textstream
    Dim shData As Worksheet
    Dim oFSO As Scripting.FileSystemObject
    Dim oTxt As Scripting.TextStream
    Dim i As Integer
     
    'Initialisation            
    Set shData = Sheets("donnees")
    Set oFSO = New Scripting.FileSystemObject
    Set oTxt = oFSO.OpenTextFile("C:\Documents and Settings\Gautier.B\Bureau\donnees.txt", ForWriting, True, False)
    i = 1
     
    'Boucle parcourant les lignes de ma feuille
    Do While (IsEmpty(shData.Cells(1 + i, 1)) = False)
     
        'une mise en forme... ne s'appliquant qu'aux cellules de la 3ème colonne
        shData.Cells(1 + i, 3).NumberFormat = "0.00"
        'écriture ligne par ligne mais la mise en forme des cellules de la 3ème
        'colonne (Cells(1+i,3)) n'est pas prise en compte... :(
        oTxt.WriteLine (shData.Cells(1 + i, 1).Value & "   " & _
                        shData.Cells(1 + i, 2).Value & "   " & _
                        shData.Cells(1 + i, 3).Value & "   " & _
                        shData.Cells(1 + i, 4).Value)
        i = i + 1
     
    Loop
     
    Set oFSO = Nothing
    Set oTxt = Nothing
    Set shData = Nothing
     
    End Sub
    Merci encore

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Re,
    Mes remarques peuvent ne pas êtres valides n'ayant pas ton/tes classeurs pour tester.
    Mais tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shData.Cells(1 + i, 3).NumberFormat = "0.0"
    et tu enchaîne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oTxt.WriteLine (shData.Cells(1 + i, 1).Value & " " & _
    shData.Cells(1 + i, 2).Value & " " & _
    shData.Cells(1 + i, 3).Value & " " & _
    shData.Cells(1 + i, 4).Value)
    essaye avec...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oTxt.WriteLine (Cstr(shData.Cells(1 + i, 1).Value) & " " & _
    Cstr(shData.Cells(1 + i, 2).Value) & " " & _
    Cstr(shData.Cells(1 + i, 3).Value) & " " & _
    Cstr(shData.Cells(1 + i, 4).Value))
    Et j'ai pas compris>...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    76.3356391348335_318.15_10_0.00176414813983959
    se trouve dans une seule cellules ou dans plusieurs.
    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    Merci le Forestier,

    Je viens de voir ta réponse, juste après avoir complété ma 1ère réponse par ce présent post...

    Comme je disais, j'y suis finalement arrivé, avec un code pas très beau et surtout très rigide au format des grandeurs se trouvant dans chaque colonne. Concrètement, pour ce faire, je transforme tout en String grâce à CStr et ensuite j'ajoute ou retire les caractères en fonction de ce que je veux... et de ce que j'ai au départ, d'où la rigidité.
    J'avais déjà essayé NumberFormat suivi de CStr comme dans ta réponse (et sans avoir vu ta réponse lol ) car il m'aurait apporté énormément de souplesse (puisque NumberFormat met en forme le nombre quelque soit sa mise en forme initiale) mais dommage ça ne marche pas, explications ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'On fait couramment
    maFeuille.Cells(1,1).Value = 9
    maFeuille.Cells(1,1).NumberFormat = "0.00"
    'et hop apparaît en A1 9.00
    'mais hélas j'aurai toujours
    maFeuille.Cells(1,1).Value 'renvoyant 9 et non 9.00
    CStr(maFeuille.Cells(1,1).Value) 'renvoyant 9 et non 9.00
    Pour répondre à ta question, les 4 nombres sont sur une même ligne mais dans 4 colonnes différentes.

    A bientôt, et merci encore
    G

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Remplace tes .Value par des .Text... ça marchera.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ex : en C4 = 9 avec format de cellule = 0.00
    a = [C4].Value ' résultat... 9
    a = [C4].Text 'résultat...  9.00
    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    euh... j'avais précisé que j'étais un énorme noob ?

    En tout cas merci énormément, maintenant mon code va être dingue (et désolé d'avoir accaparé ton temps avec cette question élémentaire...)

    Et un topic résolu de plus à ton tableau de chasse ! ;-)

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

Discussions similaires

  1. [2012] Export de données dans un fichier texte
    Par sigeInfo dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/03/2015, 16h48
  2. Exporter données dans un fichier texte en JS
    Par Funcky222 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/05/2013, 14h34
  3. [V6] Exporter données dans un fichier texte
    Par jpcre dans le forum Deski
    Réponses: 3
    Dernier message: 17/07/2009, 09h01
  4. Export particulier de données dans un fichier texte
    Par romulus34 dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/11/2007, 15h59
  5. exporter des données vers un fichier text
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/07/2006, 21h36

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