Macro pour séparer des données excel

Rick1810 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai des données dans une cellule excel, près de 10.000 lignes, que je souhaite séparer en 6 colonnes.

Il s'agit de données d'un relevé bancaire de près de 300 pages, avec des libellés aux formats aussi bien identiques que différents. Je peux par exemple avoir 500 lignes ayant un libellé similaire, 200 autres ayant également un libellé similaire et ainsi de suite.

Toutes les données doivent cependant être séparées pour être rangées dans des colonnes bien distinctes ( code service, date de valeur, libellé de l'opération, date d'opération, débit et crédit).

J'ai procéder en convertissant les données mais c'est un travail demandant énormément de temps.

Je souhaite donc avoir l'aide de quelqu'un qui s'y connaît en macro pour m'aider sur ce sujet.

J'espère avoir été le plus précis possible.

Vous en remerciant d'avance.

PS: Je tiens à préciser que je suis débutant dans le monde des macros
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Avant tout ... comment sais tu quelle donnée doit aller dans quelle colonne ? Il y a un séparateur utilisable ?
Si oui, pas besoin de macro ... la fonction "convertir" d'excel devrait suffire ...
Si non... comment comptes tu "déterminer" où "couper" les données ?

0
Rick1810 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Jordane,

Pour savoir comment répartir les données j'ai une version du fichier final en pdf donc je m'en inspire.
Maintenant pour savoir où couper les données je me base sur le nombre de caractères et le format de chaque donnée. Par exemple pour les codes services le nombre de caractères est toujours 6, la date de valeur est toujours en format j-m, le libellé de l'opération fini toujours pas le numéro du compte, la date d'opération est toujours en format jj-mm-aa et les débits et les crédits sont toujours isolés. Et toutes les données se suivent à chaque fois.
Et comme tu dis la fonction convertir pourrait suffire seulement si toutes les données ayant le même format et même nombre de caractères se suivaient. Comme je l'ai dit dans l'annonce, je peux avoir 500 lignes avec le même format et même nombre de caractères mais ces lignes ne se suivent pas. Donc pour procéder avec la fonction convertir je dois m'y prendre à plusieurs reprises.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Rick1810 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 

Et comme tu dis la fonction convertir pourrait suffire seulement si toutes les données ayant le même format et même nombre de caractères se suivaient

Je parlais d'avantage d'un séparateur commun... genre un point-virgule, un pipe ... mais visiblement ce n'est pas le cas.

Donc ...
Tu nous dis :
Par exemple pour les codes services

Et comment tu sais qu'une ligne concerne un code service ?


Tu te rends compte que pour l'instant on a toujours pas vu à quoi ressemble tes données ?
A un moment, il faudra que tu nous fournisses un fichier d'exemple .. sans ça il sera compliqué de te venir en aide.



Mais en gros :

Tu bouccles sur chaque ligne de ton fichier

En fonction de si c'est un code de service... tu découpes ta chaine en fonction des nombres de caractères souhaites

Tu fais la même chose pour un autre "type" de code
... et idem pour chaque "type" de données que tu as dans ton fichier..




Reviens nous voir avec un fichier d'exemple et pense à y inclure le code que tu auras tenté de réaliser....
0
Rick1810 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
https://www.cjoint.com/c/KJonkVaSTUY

Un lien vers un fichier d'exemple.

Les lignes du haut correspondent aux données brutes. Et en bas c'est le résultat que je souhaite obtenir.

Maintenant pour le code je n'ai rien en tête.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Rick1810 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,
pourrais-tu vérifier la ligne avec
0016PM02 08COTIS CBRIHLA        002800000273629072021                             25,00
?


en général, je vois:
- 6 caractères de code srv
- 5 caractères de date
- ~60 caractères de libellé, dont les 8 derniers caractères (hors espaces) forment la date valeur
- 10 caractères pour le montant débité
- 10 caractères pour le montant crédité

je pense que tu peux donc obtenir ce que tu souhaites en utilisant des formules, que tu pourras maitriser plus facilement que du code.
0