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 *.CSV avec nombre de caractère fixe par ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 131
    Points
    131
    Par défaut Export *.CSV avec nombre de caractère fixe par ligne
    Bonjour,

    J'aimerais exporter une feuille de mon classeur *.xls dans un fichier *.csv.
    A ce niveau là encore pas de soucis.

    Mon soucis est que le fichier *.csv résultant de l'export est utilisé par une machine qui fait des mesures. Cette machine va lire ce fichier csv et introduire des informations.
    Malheureusement pour cela, il faut impérativement que quand on ouvre le .csv avec un éditeur texte tel que NotePad++, chaque ligne contient 512 caractères ou "col" comme indiqué dans la barre d'information de NotePad++ (par exemple).

    Il n'y a jamais plus de 512 caractères par ligne dans le fichier xls d'origine. S'il y a 425 caractères dans ma ligne du fichier xls, il faudrait créer des caractères jusqu'au 512ème.

    Est-il possible lors de la création du fichier csv en vba de faire en sorte qu'il y a toujours ce nombre précis de caractères ou colonnes par ligne? Si oui, pouvez vous me donner une piste car je sèche complètement.

    Merci !
    Pensez à mettre votre sujet et un petit au passage pour ceux qui vous ont aidé.

    Passionné d'Automobile - http://www.encyclauto.com

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à tester, adapter et optimiser mais la base est là

    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
    Option Explicit
     
    Sub EcrireFichier()
    Dim Fichier As String
    Dim LastRow As Long, LastCol As Long
    Dim Sep As String, Num As Integer
    Dim r As Long, c As Long, sStr As String
     
        Sep = ";"
        Fichier = ThisWorkbook.Path & "\" & "Essai.csv"
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
        Num = FreeFile
     
        Open Fichier For Output As #Num
            For r = 1 To LastRow
                LastCol = Feuil1.Range("IV" & r).End(xlToLeft).Column
                sStr = ""
                For c = 1 To LastCol
                   sStr = sStr & Sep & Feuil1.Cells(r, c)
                Next c
                sStr = Mid$(sStr, 2, Len(sStr) - 1)
                sStr = sStr & String$(512 - LastCol, Sep)
                Print #Num, sStr
            Next r
        Close #Num
    End Sub
    Une autre interprétation donne ceci

    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
    Option Explicit
     
    Sub EcrireFichier()
    Dim sFichier As String
    Dim LastRow As Long, LastCol As Long
    Dim Sep As String, Num As Integer
    Dim r As Long, c As Long, sStr As String
    Dim NbCar As Long
     
        Sep = ";"
        sFichier = ThisWorkbook.Path & "\" & "Essai3.csv"
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
        Num = FreeFile
     
        Open sFichier For Output As #Num
            For r = 1 To LastRow
                LastCol = Feuil1.Range("IV" & r).End(xlToLeft).Column
                sStr = ""
                NbCar = 0
                For c = 1 To LastCol
                   sStr = sStr & Sep & Feuil1.Cells(r, c)
                   NbCar = NbCar + Len(Feuil1.Cells(r, c))
                Next c
                sStr = Mid$(sStr, 2, Len(sStr) - 1) & Sep
                sStr = sStr & String$(512 - NbCar, Sep)
                Print #Num, sStr
            Next r
        Close #Num
    End Sub

Discussions similaires

  1. Export CSV avec IE6
    Par trezeled dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/10/2007, 15h51
  2. [SQL2K] [BCP] Export CSV avec BCP
    Par bgd76 dans le forum Outils
    Réponses: 1
    Dernier message: 04/05/2007, 21h47
  3. nombre de caractères affichés par camllight
    Par Moi_Emilie dans le forum Caml
    Réponses: 5
    Dernier message: 17/04/2007, 22h46
  4. [CSV] Export CSV avec PHP (saut de ligne)
    Par Indy80 dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2006, 16h08
  5. Requete avec chaine de caractère commence par
    Par jazzes_dean dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/08/2004, 13h07

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