XL 2016 Macro pour exporter colonnes vers fichiers .txt

Ereudet

XLDnaute Nouveau
Bonjour à tous,

J'utilise une macro qui crée des fichiers .txt à partir des colonnes dans mon excel.

Le problème est que les colonnes que je veux transformer en fichier .txt sont des nombres décimaux, et lors du passage en fichiers .txt, les virgules de ces nombres sont remplacées par des points. Comment faire pour que les virgules restent des virgules ? :)

Pour aller plus loin, les colonne que je souhaite passer en fichiers .txt sont sur 4 onglets de ce classeur excel (30 colonnes par onglet, soit 120 fichiers à créer), et pour le moment, je dois lancer ma macro dans chacun des 4 onglets, y-a-t-il possibilité de la lancer une seul fois et qu'elle exporte les 120 colonnes des 4 onglets en 120 fichiers txt ?

Merci d'avance !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ereudet, PierreJean,
Et à quoi serviront ces fichiers txt ?

S'ils sont appelés à être rapatrier plus tard dans XL, le retour de la virgule sera automatique.
S'ils sont appelés à être lus par un PC anglophone, le point est de rigueur comme séparateur décimal.
 

Ereudet

XLDnaute Nouveau
Merci pour votre retour, ces fichiers .txt sont réutilisés derrière par une personne avec qui je n'ai pas de lien, et qui me dit que si j'ai des points ça ne fonctionne pas chez lui et que je dois rréussir à transformer ces points en virgule. Voici le fichier Excel :) Merci bcp !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Quel fichier ? ;)

Peut être une piste :
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Bonsoir @Ereudet , @sylvanu @pierrejean , le Forum

Le bon vieux "Print# Statement" devrait te sortir d'affaire pour ta virgule...
Je n'ai pas trop compris que tu veuilles un TXT par feuille et surtout par Colonne, mais bon comme je dis toujours le client est Roi !

Ci joint un mini-algo qui fera ce que tu veux pour automatiser ton boulot pour aller plus loin ... ;)

Pour aller plus loin, les colonne que je souhaite passer en fichiers .txt sont sur 4 onglets de ce classeur excel (30 colonnes par onglet, soit 120 fichiers à créer),

Dans l'exemple je n'ai fait que trois onglets avec chacun trois colonnes dont deux numériques avec décimales.
Pour tester il faut que tu sauves ce classeur dans un répertoire de test, et tu verras il te crééra dans le même répertoire 9 TXT...

Sur des plus grosses quantités je n'ai pas testé, mais ce devrait pas durer trop longtemps... (Si tu n'as pas un million de rows par colonnes non plus !)

Bonne découverte
Bien à Toi, à Vous
@+Thierry
 

Pièces jointes

  • XLD_Ereudet_TXT_Generator.xlsm
    28.1 KB · Affichages: 8

Ereudet

XLDnaute Nouveau
Bonsoir Thierry, et bonsoir à tous !

Je viens d'essayer ça marche super bien ! Merci beaucoup !

Par contre j'ai essayé de faire quelques modif mais je n'ai pas réussi à toutes les faire .

J'ai donc réussi à modifier à 30 colonnes, puis à débuter mon export à partir de la colonne B et de la ligne 2 plutôt qu'à partir de la colonne A et de la ligne 1 (car pas besoin de fichier .txt pour la première colonne, et la ligne 1 des fichier .txt doit correspondre à la ligne 2 du excel).

Par contre j'ai n'ai pas réussi à modifier le nom des fichiers exportés (chaque fichier .txt exporté doit avoir comme nom ce qui est écrit dans la cellule de la ligne 1 de la colonne exporté).

Pour prendre un exemple, si j'ai "Toto1" en B1, "Toto2" en B2, "Toto3" en B3, le fichier exporté pour la colonne B doit s'appeler Toto1, la première ligne du fichier .txt doit être Toto2, et la deuxième ligne du fichier.txt doit être Toto3.

Sais-tu me dire ce que je dois modifier, je pense que c'est dans la ligne ci-dessous, mais je ne sais pas comment dire de donner au fichier .txt le nom de la première cellule de la colonne exportée :

FileNameCible = CheminCible & WSSource.Name & "_Colonne-" & c & ".txt"
Open FileNameCible For Output As #1

Et si je souhaite mettre d'autres onglets qui ne seront pas exportés non plus, je pense que je dois ajouter leur nom ici :

If WSSource.Name <> "INTERFACE" Then

Mais est-ce que je dois séparer les noms des onglets par des espaces, des virgules, des points ? :

If WSSource.Name <> "INTERFACE", "ONGLET1", "ONGLET2" Then

Merci beaucoup pour ton aide !
 

_Thierry

XLDnaute Barbatruc
Bonjour @Ereudet , le Fil, le Forum

Heureux de savoir que c'est ce qu'il te faut, tant mieux si tu maîtrises l'ajustement au nombre de colonnes nécessaires.

Pour les deux autres points, j'ai adapté ma version afin qu'elle agisse (j'èspère !) comme tu souhaites.

Par contre j'ai n'ai pas réussi à modifier le nom des fichiers exportés (chaque fichier .txt exporté doit avoir comme nom ce qui est écrit dans la cellule de la ligne 1 de la colonne exporté).
Je pense que c'est réglé, je te laisse deux choix, mon préféré c'est le Heading de Colonnes qui deviendra le File.Name. (Et en Commentaires la Valeur de A1, mais il faudra lui ajouter un numéro pour chaque colonne)
Pour ta gouverne, le Print# Statement ne fait pas dans la dentèle, si le File.name existe déjà le fichier .txt sera pûrement et simpliment écrasé sans autre forme de procès (d'où obligation d'avoir un file name unique)


Mais est-ce que je dois séparer les noms des onglets par des espaces, des virgules, des points ? :
If WSSource.Name <> "INTERFACE", "ONGLET1", "ONGLET2" Then
J'ai basculé avec un Select Case, c'est plus simple à gérer dans ce cas que de faire une suite de IF, AND...


Bonne découverte
Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_Ereudet_TXT_Generator_v01.xlsm
    29.6 KB · Affichages: 6

Discussions similaires

Réponses
73
Affichages
965
Haut Bas