Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2011, 22h23   #1
Nouveau Membre du Club
 
Yann
Étudiant
Inscription : octobre 2009
Messages : 20
Détails du profil
Informations personnelles :
Nom : Yann

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2009
Messages : 20
Points : 33
Points : 33
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 !
KrismatX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 02h55   #2
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 705
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

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

Informations forums :
Inscription : juin 2006
Messages : 1 705
Points : 3 626
Points : 3 626
Salut, à tester, adapter et optimiser mais la base est là

Code :
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 :
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
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web