Import et export de tx

  • Initiateur de la discussion Initiateur de la discussion dilack
  • Date de début Date de début

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 !

dilack

XLDnaute Occasionnel
salut à tous
Etant plus que débutant en programation sous excel, j'essaye de créer une macro qui me permet d'importé un fichier txt en délimité avec comme séparateur une tabulation et comme identificateur de texte ' et de suprimer les expaces entre des caractère et en dernier d'avoir l'option de l'enregistrer sous un nouveau nom et dans n'importe quelle répertoire avec l'extension cvs.
je me prend la tête depuis 3 jours pour avoir un résutats probant.

Tout ceci pour l'intégrer dans un programme sous autocad

en pieces jointe le fichier de départ et d'arrivé
merci d'avance pour vos réponse
 

Pièces jointes

Re : Import et export de tx

Bonjour Dilack, le Forum

Je pense que tu seras content d'être passé sur XLD, ce que tu demandes est quasiment ce que je fais toute la journée lol !

Voilà une première approche ...

Code:
Option Explicit

Sub ImportTXT()
Dim Record As String
Dim Container As Variant
Dim i As Integer, ii As Byte
Dim ThePath As String
 
ThePath = ThisWorkbook.Path & "\implantation.txt" [COLOR=green][B]'A Adapter...[/B][/COLOR]
Open ThePath For Input As #1
    
    Do While Not EOF(1)
        i = i + 1
        Line Input #1, Record
        Container = Split(Record, Chr(44)) '44 = ","
            For ii = 1 To 3
                With ThisWorkbook.Worksheets("Import_TXT")
                   .Cells(i, ii) = Application.WorksheetFunction.Substitute(Container(ii - 1), "'", "")
                End With
            Next ii
    Loop
Close #1
AutoSaveFile
End Sub

Sub AutoSaveFile()
Dim TXTBook As Workbook, TXTSheet As Worksheet
Dim FileName As Variant
Set TXTSheet = ThisWorkbook.Worksheets("Import_TXT")
TXTSheet.Copy
Set TXTBook = ActiveWorkbook
    FileName = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv")
    If Not FileName = False Then
        TXTBook.SaveAs FileName, FileFormat:=xlCSVWindows
    End If
End Sub

Bon Appétit

@+Thierry
 
Re : Import et export de tx

Oups c'est re-moi

Une variante pour Fermer aussi le CSV ainsi créé...

Code:
Sub AutoSaveFile()
Dim TXTBook As Workbook, TXTSheet As Worksheet
Dim FileName As Variant
Set TXTSheet = ThisWorkbook.Worksheets("Import_TXT")
TXTSheet.Copy
Set TXTBook = ActiveWorkbook
    FileName = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv")
    If Not FileName = False Then
        With TXTBook
            .SaveAs FileName, FileFormat:=xlCSVWindows
            .Close False
        End With
    End If
End Sub


PS Il est nécéessaire pour que ce code fonctionne que tu aies bien une feuille nommée "Import_TXT" dans le classeur qui recevra ce code et sera sauvé dans le même répertoire que tes TXT d'origines...

Re bon-app
@+Thierry
 
Re : Import et export de tx

salut dilack, le forum,

AutoSaveFile est le nom de la procédure de Thierry pour sauvegarder le fichier csv.
je pense que tu as copié les 2 procédures que Thierry t'a proposé. hors, dans un même module de code, on ne peut pas avoir 2 procédures portant le même nom, d'où le message d'erreur.

je me trompe ?
 
Re : Import et export de tx

Bonjour a tous,

Je me permet de venir confirmer la réponse de Kobaya, en effet, 2 procédures ne peuvent avoir le meme nom. Il faut que tu mettes la première procédure de Thierry, c'est à dire Sub ImportTXT()

Ensuite, tu as le choix de mettre l'une des deux procédures Sub AutoSaveFile(), suivant que veuilles ou non fermer le fichier?

@+
 
Re : Import et export de tx

C'est bon thierry j'ai été un peu trop vite j'ai fait un copier coller sans suprimer le deuxieme sous programme de ta solution, mais le hic c'est que rien ne se passe.
Je pense plutot que ca viens de chez moi je doit m'y prendre comme une brelle.
Verifie au cas où.

Ca vient peut être que j'ai fait simplement un copier coller dans visual basic et enregistrer sous mon repertoire ma feuille excel en modifier la partie du C:\......
Enfin bref que nini ca ne marche pas
 
Re : Import et export de tx

re,

Une petite question dilack, quand tu lance la macro il ne se passe rien du tout ? Parce que je viens de tester le code de l'ami Thierry et il a l'air de fonctionner chez moi (je ne sais pas trop a quel resultat on doit aboutir 😛 )

@+
 
Re : Import et export de tx

Bonjour Porcinet, Bonjour Kobaya, re Dilack, le Forum

Merci les gars pour l'assistance et les réponses à Dilack et les essais aussi !

Oui en effet, tu dois choisir une Seule des Procédures "AutoSaveFile" !

Sinon pour faire plus simple voici une Démo avec le Fichier TXT Source à extraire également du Zip pour faire des Tests...

Bonne Fin d'Après-Midi

@+Thierry
 

Pièces jointes

Re : Import et export de tx

Effectivement thierry ca marche.😉
Je vous remercie de votre aide vous m'enlever une ENORME EPINES DU PIED
Dernière petite chose pouvez vous m'orienter sur des docs sur la programmation sur excel (tutos livres ....) pour commencer niveau style: programmation pour les nuls à chiers😛

Désoler pour le retard de ma réponse mais j'ai eu des imprévus avec un des mes enfants.
 
Re : Import et export de tx

Bonjour à tous,
je viens de voir ton fichier Thierry, XLD_Import_Export_TXT.zip , et il m'intéresse beaucoup, mais j'aurais un besoin un peu plus avancé que ce qu'il offre.
Est-il possible d'ouvrir un répertoire de fichier txt, et que chacun de ces fichiers soit ouvert automatiquement dans une nouvelle feuille sans définir à l'avance le nom des feuilles? (car ne connaissant pas le nombre de fichiers à l'avance, cela éviterait de définir 400 feuilles à l'avance).

Bonne journée à tous
Yannick
 
Re : Import et export de tx

Bonjour Dilack, Yannock, Porcinet, Kobaya, le Forum

Heureux d'avoir pu t'aider Dilack !

Pour Yannock, voici une version spéciale pour toi qui va gérer des "Multi-Fichiers-TXT" en les important sur des Feuilles générées à la Volée qui porteront les noms des TXT respectivement...

Mais NB l'algo est toujours basé sur la même structure des Fichiers TXT de Dilack étant donné que tu n'as rien précisé....

Je mets trois TXT exemples (avec la Structure de Dilack) dans le Zip pour faire des tests...

Bonne journée

@+Thierry


EDITION !!!

Pour Dilack, sorry pour ta demande de bouquins... En général je recommande toujours les livres de John Walkenbach (qui fait aussi VBA programmation pour les Nuls d'ailleurs)

Le lien vers son site au cas où.... The Spreadsheet Page - Microsoft Excel
 

Pièces jointes

Dernière édition:
Re : Import et export de tx

C'est génial Thierry!! 🙂 Vraiment merci, car je bloquais depuis plusieurs pour importer plusieurs fichiers sur un seul classeur.
Par contre c'est vrai que je n'ai pas précisé la structure de mes fichiers et je me retrouve bête maintenant 🙁 car je ne sais pas comment appliqué dans le code du fichier ma structure qui est la suivante:
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), _
TrailingMinusNumbers:=True
Je vais chercher comment la coller mais si jamais tu repasses par là Thierry, je ne te remercierai jamais assez.

Ah et autrechose, j'en demande peut-être trop, mais est-il possible de dépasser la limite des 65536 lignes?

Et dernière chose, mais je peux m'en passer, c'est vraiment pour avoir un fichier propre à la fin mais c'est pas important. J'était en train de bricoler avec les filtres car j'ai besoin de faire un truc du style:
Columns("A:A").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="278"
mais ce filtre cache seulement les lignes qui ne m'intéresse pas et ne les supprime pas, j'ai vu qu'il y a plusieurs possibilité plus ou moins rapide pour supprimer des lignes ne contenant pas une valeur précise mais lorsque le fichier fait plusieurs milliers de lignes, ça devient quand même super long et excel peut finir par planter à cause du trop grand nombre de données.
Je voulais donc savoir si il y a possibilité lors de l'importation du fichier txt, d'importer la ligne seulement si elle contient une valeur précise? cela permettrait d'importer seulement les lignes qui m'intéresse et peut-être d'avoir une méthode plus rapide que de supprimer des lignes?
 
Re : Import et export de tx

Re Bonjour Yannoch, le Fil, le Forum

Je te réponds vite fait car je pars déjeuner...

Mais déjà "Ouille Ouille Ouille" !!!

Au regard de ton premier Post : "cela éviterait de définir 400 feuilles à l'avance"

Et ensuite du dernier "est-il possible de dépasser la limite des 65536 lignes"

Là ça devient vraiment limite pour Excel si je récapitule les deux informations !!! (Faudrait voir avec Excel 2007 ou alors Access)

De toutes les manières le temps de traitement va être super long si on applique un Algo Similaire à celui que j'ai fait pour Dilack, il vaudra mieux un Import "OpenText" comme tu l'as déjà indiqué...

J'essaierai de repasser dans l'après midi

Bon App
@+Thierry
 
Re : Import et export de tx

Re Bonjour,
Je comprend que pour de nombreuses données nombreuses, il serait mieux d'utiliser des outils appropriés mais ce n'est qu'un besoin ponctuel (peut-être 1 fois par mois), il n'y aura jamais 400 feuilles, c'était un peu (beaucoup) exageré, au mieux il y en aura une dizaine par classeur, c'est surtout le nombre de lignes qui peut aller de 20 000 jusqu'à environ 150 000 (c'est des statistiques de serveurs mail).
Jusqu'à maintenant (c'est là deuxième fois en fait), je faisais la découpe des fichiers et les importations manuellement ce qui me prend une bonne journée mais j'aimerai vraiment automatiser ça maintenant, car je pense que tout le monde comprendra, manipuler des centaines de millier de lignes, ça devient vite ennuyant.
Bref, rien que le fait d'importer plusieurs fichiers dans un même classeur, c'est déjà super, je te remercie encore Thierry, mais si tu peux voir pour la suite que j'ai demandé, ça m'aidera vraiment.

Bon appétit à tout ceux qui n'ont pas encore mangé

a+tard
 
Dernière édition:
- 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
Retour