Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

JCGL

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

Bonjour à tous,

Kristof : si tu joignais un bout de fichier XL cela serait plus simple pour nous et nous n'aurions à le créer pour les tests...

A+
 

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
 

JCGL

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

Bonjour à tous,

Amrane : Merci de rendre à mDF ce qui n'appartiens pas JCGL

Oui cela est possible dépose un petit exemple

A+
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
262
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…