Créer fichier txt à partir d'un fichier excel

Kristof

XLDnaute Nouveau
Bonjour le Forum,

Je souhaite transformer mon fichier Excel en un fichier txt pour l'importer dans une base de données.
Mon fichier Excel est très simple une 20taine de colonnes et en générale pas plus de 200 lignes. Dans les cellules, on peut trouver du texte ou des nombres.
Mon fichier txt doit avoir une structure particulière qui est la suivante :
- Dans le fichier txt je ne dois pas sortir la première ligne (intitulé des colonnes) du fichier Excel,
- Chaque ligne de mon fichier excel doit correspondre à une ligne dans le fichier txt,
- Les valeurs des cellules doivent être séparées par un |,
- Si une cellule du fichier excel ne contient pas de valeurs, rien ne doit apparaîte dans le fichier txt (on se retrouve avec 2 | de suite),

Je n'ai aucune idée sur la réalisation de ce type de fichier donc merci pour l'aide que le forum pourra m'apporter.

Kristof
 

myDearFriend!

XLDnaute Barbatruc
Re : Créer fichier txt à partir d'un fichier excel

Bonsoir Kristof, JCGL,

Je te propose 2 solutions :

La première, la plus simple, manuelle et sans aucun code VBA :
  • Tu sauvegardes ton fichier sous forme de fichier .CSV (séparateur = point-virgule) par menu Fichier / Enregistrer sous.
  • Puis tu renommes le fichier sauvegardé sous forme "MonFichier.csv" en "MonFichier.txt"
  • Tu l'ouvres dans le bloc-note de Windows
  • Puis tu fais : menu Edition / Remplacer et tu remplaces les ";" par des "I" (et tu en profites pour supprimer la première ligne).
La deuxième :
Tu copies et lances la procédure VBA ci-dessous :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Sub[/COLOR] Traitement()
[COLOR=GREEN]'myDearFriend  -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Plage [COLOR=NAVY]As[/COLOR] Range
[COLOR=NAVY]Dim[/COLOR] Fichier [COLOR=NAVY]As String[/COLOR], Chaine [COLOR=NAVY]As String
Dim[/COLOR] L [COLOR=NAVY]As Long
Dim[/COLOR] F [COLOR=NAVY]As Integer[/COLOR], C [COLOR=NAVY]As Integer
    Set[/COLOR] Plage = Sheets(1).UsedRange
    [COLOR=NAVY]Set[/COLOR] Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1)
    F = FreeFile()
    Fichier = Replace(ThisWorkbook.FullName, ".xls", ".txt")
    [COLOR=NAVY]Open[/COLOR] Fichier [COLOR=NAVY]For Output As[/COLOR] #F
    [COLOR=NAVY]For[/COLOR] L = 1 [COLOR=NAVY]To[/COLOR] Plage.Rows.Count
        Chaine = Plage.Cells(L, 1)
        [COLOR=NAVY]For[/COLOR] C = 2 [COLOR=NAVY]To[/COLOR] Plage.Columns.Count
            Chaine = Chaine & "|" & Plage.Cells(L, C)
        [COLOR=NAVY]Next[/COLOR] C
        [COLOR=NAVY]Print[/COLOR] #F, Chaine
    [COLOR=NAVY]Next[/COLOR] L
    [COLOR=NAVY]Close[/COLOR] #F
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Edition :
Attention toutefois, compte tenu de la ligne "Fichier = Replace(ThisWorkbook.FullName, ".xls", ".txt")", le fichier Excel d'origine doit déjà avoir été sauvegardé sur le DD avant.

Par ailleurs, si tu possèdes une version Excel 97, il convient de remplacer "Replace" par "Application.Substitute".

Cordialement,
 
Dernière édition:

Amrane

XLDnaute Junior
Re : Créer fichier txt à partir d'un fichier excel

BJR.


C'est trés impressionnante votre solution monsieur JCGL, moi je m'inquéte pour le sens inverse, C.A.D: est ce que on peut regrouper des fichier TXT dans un emplacement definie en une feuille Excel !

Merci.

Amrane
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
212

Statistiques des forums

Discussions
312 470
Messages
2 088 700
Membres
103 927
dernier inscrit
Mkeal