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 excel vers txt - Ajouter des décimales aux nombres entiers [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Export excel vers txt - Ajouter des décimales aux nombres entiers
    Bonjour
    Je suis débutant avec VBA
    Voilà ma problématique. J'ai fait une macro pour transformer un fichier excel en fichier texte.
    J'ai dans ce fichier, 4 colonnes au format Nombre, avec 3 décimales.
    Lorsque je lance la macro, mon export se fait bien, par contre les nombres entiers de ces colonnes sont exportés sans décimales. Or je dois ensuite réutiliser ce fichier dans une application et j'ai besoin que tous mes nombres conservent bien 3 décimales, même si ce sont en fait des entiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            RowIndex = 2
            MaxRows = 30000
            For RowIndex = 2 To MaxRows
                Do While Trim(Worksheets(6).Cells(RowIndex, 1)) <> ""
                Application.StatusBar = "Creating File..." & Str(RowIndex)
                   strSql = Chr(34) & Worksheets(6).Cells(RowIndex, 1) & Chr(34) & ";" & Worksheets(6).Cells(RowIndex, 2) & ";" & Worksheets(6).Cells(RowIndex, 3) & ";" & Worksheets(6).Cells(RowIndex, 4) & ";" & Worksheets(6).Cells(RowIndex, 5) & ";" & Chr(34) & Worksheets(6).Cells(RowIndex, 6) & Chr(34) & ";" & Worksheets(6).Cells(RowIndex, 7) & ";" & Worksheets(6).Cells(RowIndex, 8) & ";" & Chr(34) & Chr(34) & ";;" & Chr(34) & Chr(34) & ";" & Chr(34) & Chr(34) & ";" & Worksheets(6).Cells(RowIndex, 9) & ";" & Worksheets(6).Cells(RowIndex, 10) & ";" & Worksheets(6).Cells(RowIndex, 11) & ";" & Worksheets(6).Cells(RowIndex, 12) & ";;;;" & Chr(34) & Chr(34) & ";;" & Chr(34) & Chr(34)
                   strSql = strSql & ";"
                   Print #i, strSql
                   RowIndex = RowIndex + 1
                Loop
     
            Next RowIndex
    Je suis preneur de toutes les bonnes idées

    Merci

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Tu peux remplacer chaque valeur de cellule comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(6).Cells(RowIndex, 1)
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(Worksheets(6).Cells(RowIndex, 1),"0.000")
    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Super ça marche très bien, merci du conseil.

    Dernier point tant que j'y suis : le séparateur décimal est une virgule. Est ce que je peux le forcer sur un point sans changer les paramètres régionaux de mon PC (car je suppose que ça vient de là)?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé comment faire

    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
     
            RowIndex = 2
            MaxRows = 30000
            NewVal1 = ""
            NewVal2 = ""
            NewVal3 = ""
            NewVal4 = ""
            For RowIndex = 2 To MaxRows
                Do While Trim(Worksheets(6).Cells(RowIndex, 1)) <> ""
                Application.StatusBar = "Creating File..." & Str(RowIndex)
                   NewVal1 = Replace(Format(Worksheets(6).Cells(RowIndex, 9), "0.000"), ",", ".")
                   NewVal2 = Replace(Format(Worksheets(6).Cells(RowIndex, 10), "0.000"), ",", ".")
                   NewVal3 = Replace(Format(Worksheets(6).Cells(RowIndex, 11), "0.000"), ",", ".")
                   NewVal4 = Replace(Format(Worksheets(6).Cells(RowIndex, 12), "0.000"), ",", ".")
                   strSql = Chr(34) & Worksheets(6).Cells(RowIndex, 1) & Chr(34) & ";" & Worksheets(6).Cells(RowIndex, 2) & ";" & Worksheets(6).Cells(RowIndex, 3) & ";" & Worksheets(6).Cells(RowIndex, 4) & ";" & Worksheets(6).Cells(RowIndex, 5) & ";" & Chr(34) & Worksheets(6).Cells(RowIndex, 6) & Chr(34) & ";" & Worksheets(6).Cells(RowIndex, 7) & ";" & Worksheets(6).Cells(RowIndex, 8) & ";" & Chr(34) & Chr(34) & ";;" & Chr(34) & Chr(34) & ";" & Chr(34) & Chr(34) & ";" & NewVal1 & ";" & NewVal2 & ";" & NewVal3 & ";" & NewVal4 & ";;;;" & Chr(34) & Chr(34) & ";;" & Chr(34) & Chr(34)
                   strSql = strSql & ";"
                   Print #i, strSql
                   RowIndex = RowIndex + 1
                Loop
     
            Next RowIndex
    Merci encore de ton conseil pgz

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

Discussions similaires

  1. [XL-2007] Copier-coller texte Excel vers internet ajoute des guillemets intempestifs
    Par cornelius59 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/10/2009, 21h31
  2. Export tableau Excel vers txt
    Par TheRealMike dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2009, 08h53
  3. exportation excel vers txt
    Par actaruss dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 06/09/2006, 09h38
  4. Export au format txt : gestion des NULL
    Par guidav dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 11h28
  5. [VB]Ajouter des icones aux boutons de la TOOLBAR
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/03/2006, 09h41

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