![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2005
Messages: 38
|
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 |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2005
Localisation: Grenoble
Version Excel : Excel 2003 (PC)
Messages: 3 707
|
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+ |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 2 378
|
Bonsoir Kristof, JCGL,
Je te propose 2 solutions : La première, la plus simple, manuelle et sans aucun code VBA :
Tu copies et lances la procédure VBA ci-dessous : Code:
DANS UN MODULE DE CODE STANDARD
Sub Traitement()
'myDearFriend - www.mdf-xlpages.com
Dim Plage As Range
Dim Fichier As String, Chaine As String
Dim L As Long
Dim F As Integer, C As Integer
Set Plage = Sheets(1).UsedRange
Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1)
F = FreeFile()
Fichier = Replace(ThisWorkbook.FullName, ".xls", ".txt")
Open Fichier For Output As #F
For L = 1 To Plage.Rows.Count
Chaine = Plage.Cells(L, 1)
For C = 2 To Plage.Columns.Count
Chaine = Chaine & "|" & Plage.Cells(L, C)
Next C
Print #F, Chaine
Next L
Close #F
End Sub
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 modification par myDearFriend! ; 21/08/2007 à 20h28. |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2005
Localisation: Grenoble
Version Excel : Excel 2003 (PC)
Messages: 3 707
|
Re,
Salut mDF, Même sans fichier, mon Cher Ami arrive à pondre un code... A+ et à tout de suite ;-) |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: mai 2007
Messages: 13
|
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 |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2005
Localisation: Grenoble
Version Excel : Excel 2003 (PC)
Messages: 3 707
|
Bonjour à tous,
Amrane : Merci de rendre à mDF ce qui n'appartiens pas JCGL ![]() Oui cela est possible dépose un petit exemple A+ |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Macro : Créer plusieurs fichiers à partir d'un fichier source | gashakura | Forum Excel | 0 | 15/05/2007 21h46 |
| mise à jour d'un fichier à partir d'un autre fichier | ca74 | Forum Excel | 2 | 01/12/2006 14h01 |
| Créer un camembert à partir d'un fichier .csv | Nath | Forum Excel | 3 | 16/03/2005 13h50 |
| Insertion/Objets/Créer à partir d'un fichier....pour plusieurs objets... | Lapou | Forum Excel Downloads - Archives | 15 | 23/11/2004 09h47 |
| modifier fichier excel à partir d'un autre fichier | nicolas | Forum Excel Downloads - Archives | 2 | 13/08/2003 18h12 |