Exporter des données d'une feuille Excel vers un fichier CSV

Bonjour à tous,

J'aurai besoin pour un projet d'avoir une macro Excel qui permet d'extraire sur une feuille Excel le contenu de certaines cellules et de le coller dans un fichier CSV.

L'extraction devrait suivre ce processus :

On lance la macro :

On fait une boucle sur tous les alias du fichier Excel (ex : AD11), ensuite pour chaque alias, on va se placer sur la ligne correspondante à l'alias et on va enregistrer les colonnes D et E (Référence N°1 et Référence N°2) dans une variable intermédiaire.

Ensuite on va sur le fichier CSV, on fait une boucle while de la ligne 1 de la colonne B à la dernière colonne du fichier jusqu'à qu'on trouve l'alias (ZzRef1Alias et ZzRef2Alias).

On va se trouver par ex sur la colonne B sur la ligne 1, on va lire : ZzRef1VOK2
On va coller sur la ligne 2 de la même colonne l'information extraite de la colonne D du fichier Excel de la ligne l'alias VOK2 donc 444520.

On fait la même chose pour les informations de la colonne E du fichier Excel qu'on colle à la ligne 2 du fichier CSV car présence de l'alias "ZzRef2(Alias)".

Toute aide serait la bienvenue :)

Merci d'avance et bonne journée !

Bonjour, quelqu'un pourrait m'aider

Voici en PJ, les fichiers (Excel et CSV).

13config-csv.csv (254.00 Octets)

Bonjour,

Quelques précisions sont nécessaires...

- Pourquoi deux tableaux? (Outils, Mesures) - Est-ce qu'il peut y en avoir d'autres? Que faire du 2ème tableau?

- Qu'entends-tu par "Com1", "Com2" dans le fichier csv? Où trouve-t-on ces infos?

- Est-ce que les en-têtes de la ligne 1 du fichier csv sont figés (pas d'autres colonnes, ou faut-il les créer selon l'exemple "ZzRef1VOK2", avec Zz en premier, Ref1 ou2 ensuite, puis l'alias?

Il y aura sûrement d'autres questions, mais commençons par celles-ci...

Quelques précisions sont nécessaires...

- Pourquoi deux tableaux? (Outils, Mesures) - Est-ce qu'il peut y en avoir d'autres? Que faire du 2ème tableau?

Bonjour, d'abord merci pour ta réponse c'est sympa de t'intéresser à mon sujet .

Et oui tu as raison je n'ai pas expliqué pourquoi il y a marqué "Outils" et "Mesures" .

Oui ce sont bien les titres des tableaux pour les différencier.

En gros pour le tableau Outils, on fait comme j'ai dit dans les anciens messages :

On fait une boucle sur tous les alias du fichier Excel (ex : VOK2), ensuite pour chaque alias, on va se placer sur la ligne correspondante à l'alias et on va enregistrer les colonnes D et E (Référence N°1 et Référence N°2) dans une variable intermédiaire.

Ensuite on va sur le fichier CSV, on fait une boucle while de la ligne 1 de la colonne B à la dernière colonne du fichier jusqu'à qu'on trouve l'alias (ZzRef1Alias et ZzRef2Alias).

On va se trouver par ex sur la colonne B sur la ligne 1, on va lire : ZzRef1VOK2

On va coller sur la ligne 2 de la même colonne l'information extraite de la colonne D du fichier Excel de la ligne l'alias VOK2 donc 444520.

On fait la même chose pour les informations de la colonne E du fichier Excel qu'on colle à la ligne 2 du fichier CSV car présence de l'alias "ZzRef2(Alias)".

Et pour le tableau Mesures, on fait la même chose sauf que l'alias recherché sur le fichier CSV est (ZzMinAlias et ZzMaxAlias au lieu de ZzRef1Alias et ZzRef2Alias).

- Qu'entends-tu par "Com1", "Com2" dans le fichier csv? Où trouve-t-on ces infos?

Com1 et Com2, ce sont des colonnes dans le fichier CSV qui seront complété manuellement, elles ne seront pas renseignées automatiquement. C'est pour cela qu'elle ni y sont pas ce sont des commentaires si tu veux.

- Est-ce que les en-têtes de la ligne 1 du fichier csv sont figés (par d'autres colonnes, ou faut-il les créer selon l'exemple "ZzRef1VOK2", avec Zz en premier, Ref1 ou2 ensuite, puis l'alias?

En faite ces en-têtes comme tu dis, ce sont des champs exportés d'un fichier PDF en fichier CSV, ils proviennent donc d'un tableau issue d'un PDF. Je sais pas si ça répond à ta questions, mais ils ont tous la forme ZzRef1Alias & ZzRef2Alias si c'est un outils ou ZzMinAlias & ZzMaxAlias si c'est une mesure.

Re-,

Pour la dernière (nombre d'en-têtes)

Comme tous les Alias ne sont pas présents, il en manque..

Est-ce qu'on peut (doit?) les créer?

Et pour le tableau "Mesures", ce sera toujours le même format? (Mesure1, Mesure2,...., Mesurexxx)?

Le titre, toujours "Mesures" (avec un "s)?

A suivre....

Ah si, il n'y a qu'une colonne "Commentaires", on peut envisager une autre? où?

Ah ok, non pas du tout il faut pas les créer c'est juste que j'utilise un exemple d'un fichier CSV.

Dès que la macro sera fonctionnelle, je l'utiliserai sur le fichier source qui est beaucoup plus grand.

Il faut donc s'imaginer qu'il y a tous les alias sur le CSV.

Et c'est bien le fait que j'ai pas mis tous les alias car je voudrais afficher une erreur si l'alias recherché n'a pas été trouvé : "L'alias (Alias) n'a pas été trouvé".

Oui pour le tableaux mesures, le titre sera toujours "Mesures" avec le même format (Mesure1, Mesure2,etc...).

La colonne commentaire du fichier Excel ne doit pas être prise en compte dans la macro c'est une colonne qui va être renseigné par l'utilisateur pareil sur le CSV, c'est renseigné manuellement.

Merci pour toutes tes questions cela permet de clarifier mes propos parce que ce que je veux faire et pas si facile que ça à expliquer

ça se précise....

Et dans le fichier Csv, comment sont notées les cellules comportant les mesures (par exemple, Mes1, Mes2)?

Je vais en rajouter deux, trois dans mon fichier pour que ça soit plus simple.

Mais elles ont pareil le format : ZzMinAlias et ZzMaxAlias.

Donc par exemple pour Mesure1 les alias sur le CSV seront : ZzMinMesure1 et ZzMaxMesure1.

Pareil pour Mesure2 : ZzMinMesure2 et ZzMaxMesure2.

Même principe pour les autres.

Je précise qu'on considère que le fichier CSV est préparé avant le lancement de la macro.

La macro doit seulement faire l'extraction des données des colonnes D et E de la feuille Excel vers le CSV.

Et en fonction du tableau Outils ou tableau Mesures, le reporter une ligne en dessous de l'alias sur le CSV.

c'était presque clair....

Et en fonction du tableau Outils ou tableau Mesures, le reporter une ligne en dessous de l'alias sur le CSV.

Est-ce à dire que la ligne "Mesures" dans le csv est sur une autre ligne que la 1?

Question subsidiaire, Mesure1 à Mesure9 max, ou Mesure158, Mesure2579, par exemple?

J'ai rajouté des cellules pour les mesures, j'ai mis les alias pour les mesures 1, 2 et 3.

5config-csv.csv (428.00 Octets)

Est-ce à dire que la ligne "Mesures" dans le csv est sur une autre ligne que la 1?

Question subsidiaire, Mesure1 à Mesure9 max, ou Mesure158, Mesure2579, par exemple?

Ah non, sur le CSV tous les alias que ce soit des alias outils ou mesures sont sur la ligne 1.

C'est Mesure1 à Mesure9. Je n'ai pas besoin de plus de mesures si c'est ça que tu demandes.

RE-,

un premier jet...

alors, plutôt que d'aller chercher ton fichier csv quelque part, j'ai créé un onglet supplémentaire, avec tes données...

Et à la fin, j'enregistre cet onglet en csv, dans le même répertoire que le fichier source

Dans les colonnes G et H, les alias ou mesures qui ne figurent pas dans le fichier csv

dis-moi si je me rapproche...

15muzan93-v1.xlsm (33.92 Ko)

Merci beaucoup pour ton implication .

Je suis actuellement en route pour rentrer chez moi, j’étais au boulot. Je regarderai ton travail et te dirais si ça correspond à ce que je voulais quand je serai rentré

Re,

J'ai regardé ton fichier c'est exactement ce que je voulais faire

Bravo !

Du coup tu penses, que cela va pouvoir fonctionner avec mon fichier CSV, en faite je voudrais que quand je clique sur le bouton GO, cela m'ouvre l'explorateur de fichier et que je sélectionne mon fichier CSV moi-même afin d'exporter les données dans celui-ci.

Re-,

si ça peut attendre demain, je pense que ça peut le faire....

Bon appétit

Merci c'est super sympa à demain dans ce cas

Bon appétit à toi aussi !

Bonjour,

La version 2, qui te propose l'ouverture d'un fichier "csv", traite les fichiers, et enregistre au format "aaaammjj_extract.csv"

A tester maintenant sur ton fichier réel (notamment le nom de l'onglet du fichier source!)

Bon courage

18muzan93-v2.xlsm (35.25 Ko)

Merci beaucoup ça fonctionne à merveille, mais j'ai une question, c'est possible d'appliquer les changements directement au fichier sans devoir en créer un autre.

En part du principe que le fichier csv est déjà ouvert. Du coup lorsque je lance la macro, je sélectionne le fichier CSV pour lui appliquer l'extraction directement dans ce dernier sans avoir besoin d'en créer un autre et de le fermer car je souhaite après ceci faire d'autres manipulations sur le fichier CSV c'est pour cela que je souhaite le garder ouvert.

En tout cas merci tu m'as été d'un grand aide !

Bonne journée.

Re-,

Pas de soucis...

Pour le point 1, on peut rester ainsi, car même si le fichier est déjà ouvert, il ne va pas s'ouvrir une deuxième fois

Donc, soit on l'ouvre (au cazou), soit on continue

Et pour ne pas l'enregistrer, à la fin du code, tu supprimes les 6 dernières lignes :

Application.DisplayAlerts = False
LePath = ThisWorkbook.Path & "\"
LeNom = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00")
ActiveWorkbook.SaveAs Filename:= _
    LePath & LeNom & "_extract.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
ActiveWindow.Close

Bonne journée

Rechercher des sujets similaires à "exporter donnees feuille fichier csv"