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

Ouvrir .txt pour enregistrer en .csv

  • Initiateur de la discussion Initiateur de la discussion Matthieu
  • 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 !

M

Matthieu

Guest
Bonjour tout le monde!

Je depuis ce matin sur un bout de code qui à pour but d'enregister plusieurs feuilles de mon classeur en .txt (jusque là, tt va bien!), puis d'ouvrir ces fichiers .txt pour les sauver en .csv (là c'est le drame). Apparament le chemin recomposé des fichiers .txt à ouvrir n'est pas bon... poutant mon code me semble logique... là je sais plus trop quoi faire!
Le code que j'utilise est le suivant :

Sub Macro2()

Dim Nom As String, chemin, Nom2, Texte, CSV As String 'Déclaration des variables (chemins des fichiers à manipuler)

Nom = ActiveWorkbook.Name
Nom = Replace(Nom, '.xls', ' ')
chemin = ThisWorkbook.Path & '\\' & Nom
Texte = '.txt'
CSV = '.csv'

For i = 5 To 10 'Enregistrement des feuilles 5 à 10 en .txt puis en .csv
Sheets(i).saveas Filename:=chemin & Sheets(i).Name, FileFormat:=xlTextWindows

Nom2 = chemin & Sheets(i).Name 'chemin du fichier .txt à ouvrir

Workbooks.OpenText Filename:=Nom2 & Texte, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.saveas Filename:=Nom2 & CSV, FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close savechanges:=False

Next i

ActiveWindow.Close savechanges:=False
End Sub
 
Bonjour,

A première vu, il te manque des '\\' dans tes
déclarations de variable:


tu écris :
chemin = ThisWorkbook.Path & '' & Nom
la où je pense qu'il faut écrire
chemin = ThisWorkbook.Path & '\\' & Nom

Pareil sur Nom2 :
Nom2 = chemin & Sheets(i).Name
au lieu de
Nom2 = chemin & '\\' & Sheets(i).Name.

Sur quelle version d'Excel travailles tu ?

Je suis en 2000 et je n'ai jamais vu l'argument : TrailingMinusNumbers:=True

Papaye
 
apparament ça viens pas de là.
Le minus number viens du code que j'ai pompé grâce à l'enregistreue de macro... c'est une option que je ne connais pas...
 
Je crois comprendre :

Le pb est quand tu enregistres ta feuil10 en txt, ton classeur excel (qui contient la macro en cours) prend le nom de cette feuil10 avec pour extension .txt

Si tu essayes après de l'ouvrir pour l'enregistrer en CSV, il y a conflit entre la feuil10 enregistrée en txt et ton classeur excel.

Je vais essayer de faire une démo.

Papaye
 
Voici une bidouille de bas étage :

Le souci est qu'elle enregistre en plus la feuil1 ...

C'est pas top ! Je réfléchis !!

Papaye [file name=Mat_20060601130725.zip size=9255]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Mat_20060601130725.zip[/file]
 

Pièces jointes

Pétard de pétard,

J'ai réussi à faire ceci !

Papaye [file name=Mat_V2.zip size=10107]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Mat_V2.zip[/file]
 

Pièces jointes

Puteborgne! Ca fonctionne du tonnerre! T'es un as papaye! (j'ai plus qu'à essayer de comprendre cette histoire de conlit!)
Merci beaucoup pour ton aide, je vais pouvoir avancer...
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
124
Réponses
3
Affichages
800
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…