Création de fichier texte ou csv

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sly le globe trotter

XLDnaute Occasionnel
Bonjour,

Je cherche à créer, à partir d'un tableau de données Excel, un fichier texte.
Dans ce tableau de données, excepté la première colonne, chaque champ peut être vide.

Pour faciliter la création du fichier, je cherche à créer un fichier csv car il me semble que c'est plus simple depuis Excel.
Le problème arrive quand la dernière colonne de mon tableau de données ne contient pas de données... Dans ce cas, le fichier csv n'est pas généré correctement.
En effet, en ouvrant le fichier csv (cf. fichier joint) via Wordpad par exemple, il n'y a pas de ";" après mon avant dernier champ (car la dernière colonne est vide). Mais j'ai besoin de ce ";"... pour préciser que le dernier champ est justement vide.

Est-il possible de le faire apparaitre ? Si non, comment créer un fichier texte à partir d'un tableau de données Excel ?

Merci pour votre aide
 

Pièces jointes

Re : Création de fichier texte ou csv

Bonjour,

Est-ce-que tu utilises une macro pour la création de ce fichier ...?
Si oui, il suffit de rajouter la condition et le séparateur point virgule ...

Pour une aide plus précise, n'hésites pas à joindre ta macro ...

A +
 
Re : Création de fichier texte ou csv

Salut James007,

Effectivement, j'utilise une macro mais fonctionne via un copier/coller... Je ne sais pas si ça peut marcher du coup...
Code:
Private Sub CreationFichierTxt_Click()

Dim NbBalles, NumCamp, DateTes As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False

NbBalles = Sheets("Treated Data").Range("I7")
NumCamp = Sheets("Treated Data").Range("I5")
DateTes = Sheets("Treated Data").Range("D5")
DossRac = Mid(ActiveWorkbook.FullName, 1, InStrRev(ActiveWorkbook.FullName, "\"))

If NbBalles <> "" And NumCamp <> "" And DateTes <> "" Then
    ' FichierActif correspond au fichier dans lequel récupérer les infos
    FichierActif = ActiveWorkbook.Name
    
    ' Création du fichier pour la bdd
    Workbooks.Add
    Sheets(3).Delete
    Sheets(2).Delete

    ' FichierBdd correspond au fichier qui sera intégré dans la base bne
    FichierBdd = ActiveWorkbook.Name
    
    Windows(FichierActif).Activate
    Sheets("Treated Data").Range("A29:W10000").Select
    Selection.Copy
    
    Windows(FichierBdd).Activate
    Sheets(1).Cells(2, 1).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets(1).Columns("B:C").Delete Shift:=xlToLeft
    
    Sheets(1).Cells(1, 1).Select
    Selection.NumberFormat = "@"
    Sheets(1).Cells(1, 1) = "" & Day(DateTes) & "/" & Month(DateTes) & "/" & Year(DateTes)
    
    Sheets(1).Cells(1, 2) = NumCamp
    Sheets(1).Cells(1, 3) = NbBalles
    
    ActiveWorkbook.SaveAs DossRac & NumCamp & ".csv", FileFormat:=xlCSV, Local:=True
    ActiveWorkbook.Close
    
    MsgBox "Fichier texte créé (Nom : " & NumCamp & ".csv" & " et enregistré dans le dossier " & DossRac, vbOKOnly, "Information"

    Windows(FichierActif).Activate
    Sheets("Treated Data").Range("A1").Select
Else
    MsgBox "Le nombre de balles testées et/ou la date du test et/ou le numéro de la campagne ne sont pas renseignés", vbOKOnly, "Information"
End If

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Si j'insère un ";", comment sera-t-il reconnu par Excel ?
 
Re : Création de fichier texte ou csv

Re,

Ma dernière colonne est la S... ou la T en fonction des données. ça coince quand le colonne T est vide justement.
Si je suis ton conseil, le ";" est considéré comme un champ texte et apparait dans le fichier sous la forme ";"... Pas vraiment bon pour moi malheureusement.
 
Re : Création de fichier texte ou csv

Je viens de trouver une solution en passant par un fichier texte... Ce n'est peut être pas très propre mais ça fonctionne !
Code:
    iFile = FreeFile
    Open DossRac & NumCamp & ".txt" For Output As #iFile
    
    Print #iFile, DateTes & ";" & NumCamp & ";" & NbBalles
    
    For i = 29 To Sheets("Treated data").Range("A10000").End(xlUp).Row
        Print #iFile, Cells(i, 1) & ";" & Cells(i, 4) & ";" & Cells(i, 5) & ";" & Cells(i, 6) & ";" & Cells(i, 7) & ";" & Cells(i, 8) & ";" & Cells(i, 9) & ";" & Cells(i, 10) & ";" & Cells(i, 11) & ";" & _
                                 Cells(i, 12) & ";" & Cells(i, 13) & ";" & Cells(i, 14) & ";" & Cells(i, 15) & ";" & Cells(i, 16) & ";" & Cells(i, 17) & ";" & Cells(i, 18) & ";" & Cells(i, 19) & ";" & Cells(i, 20) & ";" & _
                                 Cells(i, 21) & ";" & Cells(i, 22) & ";" & Cells(i, 23)
    Next i
    Close #iFile

Merci bcp pour ton aide James007
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
3 K
Réponses
15
Affichages
989
Retour