XL 2019 Macro fichier Excel => fichier .txt

SimonAbrhm

XLDnaute Nouveau
Bonjour à tous,
Je vous remercie d'avance pour votre aide ! :)
Je souhaiterais à partir d'une macro transformer un fichier Excel (en PJ) en fichier .txt. Ce fichier devra respecter la mise en forme du fichier .txt en PJ.
La première colonne du fichier .txt correspond à 10 chiffres (0123456789). Attention : ces 10 chiffres ne figurent pas dans le fichier Excel. Cependant, ces 10 chiffres sont toujours les mêmes (voir fichier .txt en PJ). Chaque colonne du fichier .txt est séparée par un espace. La deuxième colonne reprend les données de la colonne A du fichier. La troisième colonne du fichier .txt reprend la date qui figure dans le fichier Excel colonne C. La doite doit en format comme dans le fichier .txt c'est-à-dire 6 chiffres et en format anglais (mmjjaa). Exemple : 10-Dec-19 => 121019. La quatièreme colonne du fichier .txt correspond à la colonne D du fichier Excel. Attention : le format numérique est un peu spécial. Exemple : si j'ai le montant suivant dans l'Excel $543.89 il doit être comme suit dans le fichier .txt : 0000054389. Le numéro contient toujours 10 chiffres et les 2 derniers chiffres étant les décimales. Autre exemple : $0.89 => 0000000089. La dernière colonne du fichier .txt reprend le nom du client du fichier Excel colonne H. Dans le fichier .txt le nom du client doit être en majuscule.
Dans le fichier .txt, je ne dois pas avoir la première et la dernière ligne du fichier Excel.
Pour information, je ne peux pas modifier le fichier Excel. Il s'agit d'un Excel que j'exporte d'un logiciel dès que j'en ai le besoin.
Si certains points ne sont pas clairs, n'hésitez pas à me le dire.
Encore merci pour votre aide !
Simon
 

Pièces jointes

  • Exemple_Txt.txt
    245 bytes · Affichages: 13
  • Exemple_Excel.xlsx
    12.5 KB · Affichages: 24

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @SimonAbrhm,

Voir le fichier joint (SimonAbrhm- exporter en TXT- v1.xlsm). Pour l'utiliser, il faut:
  1. avant de lancer la macro de ce fichier, vous devez avoir ouvert le classeur contenant les données à traiter. Vous pouvez tester avec le fichier joint (Exemple Fichier Data Source.xlsx)
  2. le nom du dossier des fichiers texte résultats est dans la constante Chemin dans le code de la macro. Avant de lancer la macro, vous devez adapter la valeur de cette constante à votre environnement.
  3. le numéro à 10 chiffres de la première colonne est dans la constante Num10 dans le code de la macro. Avant de lancer la macro, vous devez adapter la valeur de cette constante à votre environnement.
Le code est dans le module Module1. Ci-dessous, les constantes à modifier:
VB:
Const Num10 = "0123456789"          ' à adapter
Const Chemin = "c:\dossiers"        ' à adapter
 

Pièces jointes

  • SimonAbrhm- exporter en TXT- v1.xlsm
    20.3 KB · Affichages: 6
  • Exemple Fichier Data Source.xlsx
    11.7 KB · Affichages: 9
Dernière édition:

SimonAbrhm

XLDnaute Nouveau
Bonjour mapomme, ça marche parfaitement ! c'est super. Merci beaucoup :) un dernier point, les noms des clients en colonne H doivent être en majuscule dans le fichier .txt. est-ce que tu pourrais ajouter cela à la macro ? ça serait super !
Encore merci
Simon
 

SimonAbrhm

XLDnaute Nouveau
Mapomme, merci pour ton retour rapide. Je viens de m'apercevoir qu'il y a un problème avec la macro au niveau de la colonne H.
Dans la colonne H, j'ai par exemple Client AB 1 et dans le fichier .txt il apparait comme suit : Client AB, 1. ça serait parfait, si le nom du client reste indique au fichier EXcel. Encore merci pour ton aide :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Je viens de m'apercevoir qu'il y a un problème avec la macro au niveau de la colonne H.
Dans la colonne H, j'ai par exemple Client AB 1 et dans le fichier .txt il apparait comme suit : Client AB, 1. ça serait parfait, si le nom du client reste indique au fichier EXcel.

Le fichier texte de ton premier message fait apparaitre une virgule. Donc tu n'en veux plus de la virgule ?
 

SimonAbrhm

XLDnaute Nouveau
Re,
Ah mince. En effet, je me suis trompé, désolé.
Le nom du client doit figurer dans le fichier texte comme dans le fichier EXcel mais en majuscule.
Exemple : Construction, Limited (EXCEL) => CONSTRUCTION, LIMITED (TEXTE).
En bricolant, j'ai remplacé le texte dans la macro par t(i, 1) = t(i, 1) & " " & UCase(t(i, 8)) et ça semble fonctionner.
Désolé pour la confusion.
Encore merci beaucoup pour ton aide, tu m'as gagné du temps :)
 

SimonAbrhm

XLDnaute Nouveau
Bonjour Mapomme, j'ai re-besoin de ton aide :) est-ce que par hasard tu pourrais limiter le nombre de caractères à 49 pour le nom du client ? et si c'est inférieur à 49 caractères, rajouter des espaces pour arriver à 49.
Merci beaucoup pour ton aide!
 

SimonAbrhm

XLDnaute Nouveau
Mapomme, je te solicite une fois de plus. J'espère que tu pourrais m'aider.
Je souhaiterais également que la macro exclut les lignes avec pour montant 0 (colonne D, MONTANT).
Donc que dans mon fichier .txt je n'ai que des lignes avec des montants différents de 0.
Une fois de plus merci pour votre aide.
Simon
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Macro VBA
Réponses
16
Affichages
626
Haut Bas