Macro pour séparer des données excel

Signaler
Messages postés
6
Date d'inscription
mardi 12 novembre 2019
Statut
Membre
Dernière intervention
14 octobre 2021
-
Messages postés
17680
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2021
-
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

1 réponse

Messages postés
34139
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2021
3 847
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 ?

Messages postés
6
Date d'inscription
mardi 12 novembre 2019
Statut
Membre
Dernière intervention
14 octobre 2021

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.
Messages postés
34139
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2021
3 847 >
Messages postés
6
Date d'inscription
mardi 12 novembre 2019
Statut
Membre
Dernière intervention
14 octobre 2021


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....
Messages postés
6
Date d'inscription
mardi 12 novembre 2019
Statut
Membre
Dernière intervention
14 octobre 2021
>
Messages postés
34139
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2021

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.
Messages postés
17680
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2021
947 >
Messages postés
6
Date d'inscription
mardi 12 novembre 2019
Statut
Membre
Dernière intervention
14 octobre 2021

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.