Eclater une ligne en plusieurs lignes selon un schéma donné
Ririfi88
Messages postés
11
Statut
Membre
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Fervent adepte des gains de temps via Excel, mais débutant total en programmation VBA, j'aurais besoin de vos lumières pour créer une macro qui me permettrait rapidement de transformer un listing (nombre de lignes variable) sous la forme "Source" ci-dessous, en quelque chose ayant la même forme que la "Destination" ci-dessous.
Les initiés reconnaîtront dans la destination des écritures comptables...
A titre d'info, dans la destination :
- le champ "VEN" est invariable
- le troisième champ, qui contient le numéro de compte, suit toujours le même schéma "411000", "707000", et 445710" dans les trois lignes générées
- le champ "D" ou "C" suit toujours le même schéma, à savoir pour une même ligne source il faut mettre "D" à la première ligne générée, et "C" aux deuxième et troisième lignes générées
- le dernier champ de destination (dans l'exemple "1" ou "2") peut être pris au choix dans le deuxième ou le troisième champ source.
Merci d'avance pour votre aide qui me sera très précieuse...
Fervent adepte des gains de temps via Excel, mais débutant total en programmation VBA, j'aurais besoin de vos lumières pour créer une macro qui me permettrait rapidement de transformer un listing (nombre de lignes variable) sous la forme "Source" ci-dessous, en quelque chose ayant la même forme que la "Destination" ci-dessous.
Les initiés reconnaîtront dans la destination des écritures comptables...
Source (fichier txt) : 12/11/2012;1;1;DUPOND;Goerges;25.00;23.70;1.30 28/11/2012;2;2;DURANT;Georgette;30.00;28.44;1.56 Destination (fichier txt ou csv, si possible) : 12112012;VEN;411000;DUPOND Georges;D;25;1 12112012;VEN;707000;DUPOND Georges;C;23,7;1 12112012;VEN;445710;DUPOND Georges;C;1,3;1 28112012;VEN;411000;DURANT Georgette;D;30;2 28112012;VEN;707000;DURANT Georgette;C;28,44;2 28112012;VEN;445710;DURANT Georgette;C;1,56;2
A titre d'info, dans la destination :
- le champ "VEN" est invariable
- le troisième champ, qui contient le numéro de compte, suit toujours le même schéma "411000", "707000", et 445710" dans les trois lignes générées
- le champ "D" ou "C" suit toujours le même schéma, à savoir pour une même ligne source il faut mettre "D" à la première ligne générée, et "C" aux deuxième et troisième lignes générées
- le dernier champ de destination (dans l'exemple "1" ou "2") peut être pris au choix dans le deuxième ou le troisième champ source.
Merci d'avance pour votre aide qui me sera très précieuse...
A voir également:
- Eclater une ligne en plusieurs lignes selon un schéma donné
- Partager photos en ligne - Guide
- Schéma téléphone oublié - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
- Reconnaissance musique en ligne sans télécharger - Guide
6 réponses
bonjour,
En fonction de ce que j'ai compris, voici une proposition :
https://www.cjoint.com/?BLerYV8bHkf
Le classeur ne sert que de support à la macro qui peut être placée dans le classeur PERSO éventuellement.
En fonction de ce que j'ai compris, voici une proposition :
https://www.cjoint.com/?BLerYV8bHkf
Le classeur ne sert que de support à la macro qui peut être placée dans le classeur PERSO éventuellement.
michel_m
Messages postés
18903
Date d'inscription
Statut
Contributeur
Dernière intervention
3 318
Bon, plus la peine que je joue au petit électrique...
Bonjour,
Le nombre de ligne dans la source est variable (différent chaque mois), et le but est de convertir toutes les lignes présentes.
Le nombre de ligne dans la source est variable (différent chaque mois), et le but est de convertir toutes les lignes présentes.
Désolé, mon but n'était pas de faire de la langue de bois, et même en relisant mon message une dizaine de fois, il faut vraiment chercher la petite bête pour y trouver l'intention de jouer le politicien... J'avais juste mal compris ta question, je ne savais pas qu'il te fallait un ordre d'idée sur le nombre de lignes.
Pour préciser ma réponse, il est difficile pour moi d'anticiper le nombre moyen de ligne. Peut-être 100, peut-être 500, peut-être 1000 d'ici quelques mois. En tout cas, cela ne devrait jamais dépasser 2000 a priori.
J'espère que cet ordre de de grandeur t'aidera. Merci d'avance pour ton aide.
Pour préciser ma réponse, il est difficile pour moi d'anticiper le nombre moyen de ligne. Peut-être 100, peut-être 500, peut-être 1000 d'ici quelques mois. En tout cas, cela ne devrait jamais dépasser 2000 a priori.
J'espère que cet ordre de de grandeur t'aidera. Merci d'avance pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
OK, merci, je me base donc sur 2000
si j'avais 100 lignes, j'inscrirais au fur et à mesure les cellules , avec 2000 je passerais par des tableaux en mémoire RAM beaucoup + rapide
le code est donc complètement différent, d'où ma demande
Proposition en fin d'après midi ou demain fin de matinée
si j'avais 100 lignes, j'inscrirais au fur et à mesure les cellules , avec 2000 je passerais par des tableaux en mémoire RAM beaucoup + rapide
le code est donc complètement différent, d'où ma demande
Proposition en fin d'après midi ou demain fin de matinée
Waouh, c'est juste quasi parfait... Mille mercis gbinforme!
Il y a juste une chose qui est peut-être dommage, lors de l'export vers le fichier csv, il me demande quel fichier csv ouvrir pour le "remplir" avec les lignes générées : y aurait-il un moyen pour que la macro génère elle-même un nouveau fichier csv contenant les lignes générées ? Avec éventuellement une boîte de dialogue qui demande où enregistrer le csv et sous quel nom.
Merci encore!
Et merci beaucoup à toi michel_m pour ton aide, j'ai bien vu ta proposition dans le mail de notification. ;-)
Il y a juste une chose qui est peut-être dommage, lors de l'export vers le fichier csv, il me demande quel fichier csv ouvrir pour le "remplir" avec les lignes générées : y aurait-il un moyen pour que la macro génère elle-même un nouveau fichier csv contenant les lignes générées ? Avec éventuellement une boîte de dialogue qui demande où enregistrer le csv et sous quel nom.
Merci encore!
Et merci beaucoup à toi michel_m pour ton aide, j'ai bien vu ta proposition dans le mail de notification. ;-)
Bonsoir Ririfi88,
Voici la modification : tu peux choisir un fichier existant ou saisir le nom que tu veux (sans le suffixe).
https://www.cjoint.com/?BLfvLo8eJJq
Je t'ai rajouté un comptage des articles pour matérialiser la bonne fin.
Voici la modification : tu peux choisir un fichier existant ou saisir le nom que tu veux (sans le suffixe).
https://www.cjoint.com/?BLfvLo8eJJq
Je t'ai rajouté un comptage des articles pour matérialiser la bonne fin.