Transformer une feuille Excel en CSV en modifiant la mise en forme

Bonjour à tous,

Voilà mon problème, je suis depuis plusieurs jours sur ce fichier et je n’arrive pas à un résultat satisfaisant.

Je ne suis pas familier avec VBA.

J’ai besoin d’un code assez similaire à celui de « hichem » reposté par Theze.

Bien sûr le code ne fonctionne que partiellement, le code Hichem transforme le fichier en csv, mais il ne remplit pas mes conditions.

J’ai cherché un peu partout mais en plus de ne pas trouver, je ne sais « mixé » plusieurs codes sans parler de la difficulté a comprendre.

Je part d’un fichier Excel avec 2 onglets, onglet info :

En colonne A je vais (copier/coller) des références (chiffre, lettre, …), peut varier de quelques une a plusieurs centaines.

En colonne B (copier/coller) des quantités, idem peut varier de quelques une a plusieurs centaines.

En colonne C (copier/coller) des prix, idem peut varier de quelques une a plusieurs centaines.

Ensuite je souhaite par une macro copier dans l’onglet Export [u]qui sera protégé et fonctionnera par un bouton macro dans l’onglet Info :[

26test-csv-aide.xlsm (43.56 Ko)
26test-csv-aide.xlsm (43.56 Ko)

En colonne A (copier/coller) les références de l’onglet Info (chiffre, lettre, symboles…)

En colonne E (copier/coller) les quantités de l’onglet Info (qui doit avoir une mise en forme standard uniquement des chiffres entier ex : 5, si pas les cas remettre en forme)

En colonne L (copier/coller) les prix de l’onglet Info (qui doivent absolument être sous forme 12.25, et non pas 12,25) de plus si le prix est entier il doit se transformer en 12.00 et surtout pas rester en 12, avec ctrl F j’arrive mais quand je recopie le code cela ne fonctionne pas, ni même avec l’enregistreur de macro…

En suite toujours dans onglet Export si j’ai une quantité > 1 dans Colonne E, un zéro doit être dans Colonne J, K, N (E1> 0 alors J1=0 sinon vide) j’y arrive très bien avec ma formule si, mais pas en vba idem pour K et N j’ai réussi à le faire avec Excel mais il ne l’exporte pas dans mon CSV)

Je souhaite que ce fichier soit exploitable depuis n’importe quel PC hors impossible d’appliquer le code chemin C:\ Windows\Bureau il ne veut rien savoir.

Je pense avoir expliqué mon problème de manière compréhensible, si pas le cas dites le moi car là je suis épuisé…

Je vous remercie par avance si vous pouvez m’apporter de l’aide pour résoudre ce casse tête !!!

Bonne journée

Cordialement.

https://forum.excel-pratique.com/download/file.php?mode=view&id=215968

Jean

bonjour

pourquoi VBA ?

faire menu Données / obtenir

dans la fenêtre qui s'ouvre, naviguer vers tes données de départ

"modifier"

là tu peux modifier les formats, remplacer les "," par des "." etc.

si nécessaire répéter l'opération pour d'autres tables de données afin d'associer des données venant de plusieurs tables

"charger"

tout ceci sera par la suite effectué d'un simple clic "Actualiser"

il suffit ensuite de faire menu Fichier Exporter, choisis ton format (ceci sera à répéter à chaque export)

terminé

amitiés

Bonjour Jmd,

Merci pour ta réponse, mais je pense que je ne l'ai pas comprises, car elle ne répond en rien a mon besoin.

Le fichier que je souhaites va être utilisé par d'autres personnes et il doit être le plus simple possible.

C'est pourquoi je veux de la VBA et un seul bouton qui exécute toutes les opérations en automatique.

Cordialement

Jean

re

note: mon avis perso est qu'Excel n'est pas un logiciel pour grand débutant, comme le sont les sites internets. Il vaut mieux passer à un SGBD. Mais ce n'est que mon avis

concernant la solution ci-dessus, 90% des manoeuvres sont faites par ¨Power Query

alors si tu veux vraiment mettre un unique bouton VBA,

tu peux envisager avec VBA de

  • "actualiser" la requête
  • puis lancer l'export csv

jouable ?

à te relire

note : pourrait-on ne pas confier ce clic (ou ces manoeuvres si pas de VBA) à ces personnes ?

en gros :

  • elles font des saisies
  • tu récupères tous les fichiers Excel concernés (d'un clic avec Power Query)
  • tu fais les exports (d'un clic ou de plusieurs)

?

re JMD,

Je suis obligé d'être en phase avec toi, sur le grand débutant, car je ne comprends vraiment pas ce que tu me propose...

Je te confirme bien que je ne veux qu'un seul bouton qui automatise les taches, de façon a ce que la personne qui utilise le fichier soit autonome.

Il n'est pas envisagé que je récupère le(s) fichier(s) pour un retraitement par la suite.

Merci de ta patience et d'essayer de faire avancer mon problème.

Jean

Bonsoir

Pouvez vous au moins me dire si ma demande est réalisable?

En vous remerciant

Jean

re

je reprends :

  • utiliser (en réalité on met en mémoire des instructions) Power Query pour lire les données et faire les modifications (cf mon premier message)
  • ensuite faire une macro qui :
1-actualise la requête

2-exporte au format csv

tu donnes le tout à tes correspondants, ils n'auront qu'à lancer ta macro

Merci Jmd

Je vais regarder ce qu'est power query

Je ne sais si sa mavancera mais au moins C est une piste.

Bonne soirée

Jean

Je vais regarder ce qu'est power query

quoi qu'il arrive, il FAUT l'apprendre un peu

c'est aussi important que les additions et les TCD

note : une spécialité de PQuery est d'importer les csv

amitiés

Bonjour,

Malgré les conseils de JMD je ne trouve pas de solution.

J'ai passer ma soirée sur Power query et rien.

Pouvez vous me donner un coup de main svp.

Pour rappel : je souhaite a partir de données collés dans une feuille les mettre en forme dans une autre feuille puis exporter la dite feuille en csv sur le bureau du PC.

Cordialement.

Jean

bonjour,

Après avoir passé ma soirée a essayer de comprendre power query, je me rends compte que cela ne me sert pas pour mon cas précis..

merci de votre aide peut-être vais je trouver une personne capable de me venir en aide.

Jean

re

on n'aime pas abandonner

on va y aller !

joins un fichier de départ contenant 3 colonnes et 5 lignes et crée un second onglet contenant les données après transformation juste avant export csv

et explique point par point les transformations

(ton message #1 n'est pas bien clair)

Bonsoir Jmd

ok pour le fichier cest celui depose

je vais donc reprendre mes explications ce soir point par point

merci de ne pas me laisser seul

jean

Re, JMD

Oui en effet, je n'aime pas abandonner et j'y arriverais d'une manière ou d'une autre...

J'ai refait mon fichier selon tes conseils, Onglet Info -> mes données de départ.

Onglet Export -> ce que je souhaite avant l'export en CSV sur le bureau de n'importe quelle PC

Et j'ai rajouté un onglet modif -> qui fait la synthèse des deux.

J'ai également mis mon bouton magique (VBA) dans l'onglet Info.

Le but étant de charger les données dans l'onglet Info, appuyer sur le bouton et récupérer un fichier csv sur le bureau.

J'espère avoir été clair.

Merci encore.

Jean

11test-csv-aide.xlsm (50.70 Ko)

Bonjour à tous

Une transformation avec PowerQuery :

on nomme la source par une formule nommée Atraiter

on crée un tableau vide pour la structure

Par VBA, le résultat peut être délié de la requête et la 1ère ligne supprimée pour l'export (bizarre d'ailleurs ces données sans titres...)

De même tes valeurs tantôt avec point, tantôt avec virgules interpellent...

13test-csv-pq.xlsm (64.64 Ko)

Bonjour à tous,

Merci Chris pour ton message, peux tu me l'expliquer un peu car je ne vois pas ce qu'il apporte a mon problème.

En effet mon souhait est que un utilisateur:

1- ouvre le fichier Excel,

2- colle les valeurs de forme différentes dans les 3 colonnes de la première feuille

3- appuie sur le bouton macro qui exécute les opérations

4- récupère le fichier CSV sur le bureau.

Dans ton fichier je vois que la feuille export contient les anciennes valeurs et les nouvelles + la ligne avec des C ce qui absolument incompatible.

En te remerciant.

Jean

RE

Comme je l'ai écrit : le but était juste de te montrer que la transformation est possible via PowerQuery.

Je l'ai mis sous ton exemple mais on peut le mettre ou on veut et comme je l'ai aussi écrit "Par VBA, le résultat peut être délié de la requête et la 1ère ligne supprimée pour l'export". Je n'ai pas touché à ton code...

J'ai aussi soulevé des questions auxquelles tu ne réponds pas... J'en ai d'autres :

  • à quoi est destiné ce csv ?
  • tu parles de J1 pour tes zéros sans préciser si le contrôle est ligne par ligne ou si E1 donne le la pour toute la colonne ...

On semble copier/coller tout et n'importe quoi ce qui a un fort risque de planter que l'on utilise VBA ou autre chose...

Donner qu'un tout petit morceau du problème n'aide pas à donner une solution efficace et pérenne...

A noter que le chemin du bureau est plus compliqué que cela : Windows étant multi utilisateurs, il y a plusieurs bureaux... et de plus le nom varie selon la langue de Windows.

Ce n'est pas forcément le chemin le plus adéquat...

Re Cris,

Merci pour ce retour, je pensais avoir répondu aux questions, je vais essayer d'être plus clair

Ce CSV est destiné a être utilisé par un outil qui a besoin des informations précises du CSV

En effet tu as raison je n'ai pas été assez précis le contrôle est ligne par ligne à partir de E1.

Oui malheureusement on peut copier/coller (dans l'onglet info) des données complètement différentes d'ou la difficulté.

Ok pour le chemin je vais mettre de côté pour le moment.

L'important est de réussir au moins les étapes de mon précédent message.

J'ai essayé de donner toutes les données du problème mais il possible que j'en ai oublié.

En te remerciant de te pencher sur mon problème.

Jean

re

un début

j'ai tout mis sur un même onglet (requête et ajout des colonne vides et à zéro)

j'améliore et je reviens

Rechercher des sujets similaires à "transformer feuille csv modifiant mise forme"