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

Export Feuille XLS vers TXT, puis l'inverse

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

YANN-56

XLDnaute Barbatruc
Bonsoir à ceux qui passeront par ici,

Ma Base de Données fait plus de 3 Mo, et mon but est de la rendre "Transportable"
en passant par un format texte qui sera bien moins lourd.

J'ai mis dans le Module du Classeur joint ce que j'ai trouvé sur le Net.

Cela semble correspondre à ma recherche; mais je suis infichu d'appeler les procédures.

La Feuille "TARIF" est celle à exporter.

Dans la deuxième hypothèse, la Feuille "TARIF" n'existe pas dans le Classeur,
alors je l'importe du Fichier "TXT"

Si quelqu'un peut m'aider, Merci d'avance,

Yann
 

Pièces jointes

Re : Export Feuille XLS vers TXT, puis l'inverse

Re Bonsoir à tous,

Merci pour le silence qui m'oblige à fouiner un peu plus.🙂
(Sauf que je n'ai trouvé que des "Usine à gaz" avec plein de fleurs autour!)

Je me sens un peu seul, mais c'est certainement en raison de l'heure et du jour mal choisis.

Je joins deux Classeurs:
"TRADUCTEUR" qui va faire le boulot, et "ORIGINAL" qui est destiné à être transcrit en, ".csv"

Code:
Private Sub CommandButton1_Click()
  Workbooks.Open (ActiveWorkbook.Path & "\ORIGINAL.xls")
  ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\TARIF.csv", FileFormat:=xlCSV, CreateBackup:=False   
End Sub

Par la suite, il y a une caisse de questions qui me sont posées: 😡

"Voulez-vous enregistrer les modifications apportées à "TARIF.csv" ? ....... Je dis "Oui".

Une boite "Enregistrer sous" s'ouvre. Je fais "Enregistrer.

Je me prends dans la tronche un message me disant que le Fichier "TARIF.csv" existe déjà,
et si je veux le remplacer........... Je dis "Oui".

Une nouvelle boite me propose: "Oui", "Non", "Aide"........ Y'en a marre!

Je choisis "Oui" ......... et tout est bon..... Le Fichier ".csv" a une bonne allure.

Comment passer outre cet interrogatoire?

Yann qui rame un max.😛


P.S.: Si j'ajoute dans le code:
Code:
ActiveWorkbook.Saved = True
Là, je n'ai pas de questions, mais les colonnes ne sont pas respectées, et j'ai des virgules qui se baladent partout!
 

Pièces jointes

Dernière édition:
Re : Export Feuille XLS vers TXT, puis l'inverse

Merci pour le silence qui m'oblige à fouiner un peu plus.🙂
...
Je me sens un peu seul, mais c'est certainement en raison de l'heure et du jour mal choisis.

Bonjour Yann,

Je suis dessus depuis un petit moment et l'export ne me pose pas de souci, par contre je rame avec l'import pour prévoir les colonnes en format texte (004200650 par ex). Et là je vais manger 🙂 A plus. Cordialement

KD
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Je suis parti de l'idée d'entourer le texte de doublequote lors de l'export.
Pour l'import je fais un querytable mais malgré le .TextFileTextQualifier = xlTextQualifierDoubleQuote le champ concerné enlève quand même les 0. Je cherche à ce niveau.
L'apostrophe dont tu parles est importé ? (je n'ai pas encore regardé ton fichier). Si oui cette option me gène dans le sens qu'on modifie les données. Cordialement

KD

Edit : L'import dans ton fichier efface également les 0.
 
Dernière édition:
Re : Export Feuille XLS vers TXT, puis l'inverse

oui effectivement je n'ai pas valider

et non l'appostrophe n'est pas importer
il faut le mettre juste avant d'envoyer la valeur dans la cellule

Voir modification dans mon fichier joint
 

Pièces jointes

Re : Export Feuille XLS vers TXT, puis l'inverse

Tu vas dire que je cherche la petite bête et ta solution sera probablement bonne pour Yann mais à l'import il y a bien maintenant un ' dans les cellules de la colonne B alors qu'il n'y figurait pas dans la feuille 'TARIF'. Les données importées ne sont donc pas exactement les mêmes que les exportées. D'autre par les données à l'origine commençaient à la ligne 3 et sont importées à la 1. Ceci dit je n'ai rien proposé 🙂 Cordialement

KD
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Bonsoir KenDev, Habitude, et à ceux qui passeront par là,

Je viens de tester le Fichier de Habitude.
Les apostrophes ne me dérangent pas, car je saurai m'en accommoder par la suite dans l'appli.

Il resterait à éviter les boites de dialogue demandant le chemin.
(Mais il est évident que le seul valable est sur mon ordi)

Je vais regarder cela demain, car ce soir "Dodo"... Ma santé patine un peu ces temps-ci.

Merci à vous deux. C'est vachement sympa.

Amicalement, et à demain.

Yann
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Bonsoir Yann, Habitude

Une proposition ci jointe. Pas de '. A l'import je teste le contenu à entrer dans la cellule et je formate la cellule au format texte si celui ci commence par "0" et ne commence pas par "0," ou "0." afin de retrouver le tableau initial.

Pas de boite de dialogue, il faudra donc adapter la constante vPth$ en tête de module.
"TARIF" est aussi une constante.

Par défaut la feuille exportée n'est pas supprimée et les données importées sont sur une nouvelle feuille.

Pour supprimer la feuille exportée, mettre true à la place de false ici :
VB:
Call XlsToCsv(vShNm, False, vPth)

Pour renommer la feuille d'import en "TARIF" ou selon la constante définie, mettre true à la place de false ici
VB:
Call CsvToXls(vShNm, False, vPth)

Cordialement

KD
 

Pièces jointes

Dernière édition:
Re : Export Feuille XLS vers TXT, puis l'inverse


Tu as raison pour les '
Autrement suffit de mettre un format texte aux cellules

Pour le positionnement du retour, c'est à la guise de l'utilisateur. Tout est dans le offset.


Avoir su pour les boites de dialogue, c'eut été encore plus facile.
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Oui j'ai retiré les boites juste avant d'envoyer.

Pour le format texte ce qui m'a bloqué un moment c'est d'être parti sur un query table et de vouloir faire un import 'universel' c'est à dire ne pas être censé savoir que c'est telle ou telle colonne qui devait être texte. Ayant changé mon fusil d'épaule par la suite c'était plus simple. 🙂 Cordialement

KD
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Bonjour KenDev🙂, Habitude🙂, et à ceux qui passeront par ici,

Superbe travail! Je suis conscient du temps que vous avez passé à regarder mon problème.
C'est vraiment très gentil de votre part.

Pour moi, c'est de la "Haute Voltige", car vous parlez un langage limite accessible pour le béotien que je suis.

Pour mieux comprendre et apprendre, j'ai remplacé les constantes que je ne maîtrise pas encore suffisamment
par des variables traditionnelles.
Et aussi je remplace les noms de variables (Ex: "vShNm" par "NOM_FEUILLE")....
Cela m'aide pour l'instant. Je reviendrai à l'écriture initiale par la suite.

Par contre, je ne parviens pas à piger par quel biais vSFN se charge du nom de la feuille, et sPth du chemin?

Code:
Private Sub XlsToCsv(vSFN As String, b As Boolean, sPth As String)

Comme ici:
Code:
Open sPth & vSFN & ".csv" For Output As #1

"#1" C'est quoi?

En tous les cas cette manipulation du format ".csv" va m'être particulièrement utile.

Je vous dis un grand Merci, et vous souhaite plein de bonnes choses.

Amicalement,

Yann
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Re

KenDev utilise les bon vieux Input, Output pour l'écriture
Et les fileStream pour la lecture

Pour le Output tu dois lui donné un numéro de fichier non utilisé
C'est pourquoi je n'aime pas le #1

vaut mieux utiliser la Fonction FreeFile
Qui retourne un numéro non utilisé

Code:
dim FileNumber%
FileNumber = FreeFile
Open sPth & vSFN & ".csv" For Output As FileNumber
 
Re : Export Feuille XLS vers TXT, puis l'inverse

Par contre, je ne parviens pas à piger par quel biais vSFN se charge du nom de la feuille, et sPth du chemin?
Code:
Private Sub XlsToCsv(vSFN As String, b As Boolean, sPth As String)
Lors de l'appel de XlsToCsv on a attribué des valeurs à ces variables
Code:
Call XlsToCsv(vShNm, False, vPth)
Donc dans
Code:
Private Sub XlsToCsv(vSFN As String, b As Boolean, sPth As String)
on a vSFN=vShNm, b=false et sPth=vPth


Comme ici:
Code:
Open sPth & vSFN & ".csv" For Output As #1
"#1" C'est quoi?
#1 représente le n° de fichier à ouvrir. Dans l'aide d'Excel : numéro de fichier
Nombre utilisé avec l'instruction Open pour ouvrir un fichier. Utilisez des numéros de fichier compris entre 1 et 255 inclus pour les fichiers non accessibles à d'autres applications, et entre 256 et 511 inclus pour les fichiers accessibles à partir d'autres applications.
Si il y a plusieurs fichiers susceptibles d'être ouvert en même temps généralement on utilise freefile (qui prend la valeur d'un n° non utilisé) à la place (pour que chaque fichier ait un n° propre).
Code:
Dim nb as integer
nb = FreeFile
Open sPth & vSFN & ".csv" For Output As #nb
Cordialement

KD
 
- 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

Discussions similaires

Y
Réponses
9
Affichages
1 K
P
Réponses
1
Affichages
2 K
Michel_M
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…