Décalage structure tableau

Bonjour,

Je suis confronté à un soucis lors de l'importation de ma collection de fichiers musicaux dans Excel

Dans l'exemple ci-joint certains fichiers appartiennent à plusieurs genres musicaux, parfois 2 voir 3 maxi, du coup il y a un décalage avec les autres fichiers

car il me crée une colonne par genre (Dans l'exemple ci-joint ligne 5 et 6)

Je souhaite que les genres (si il y en a plusieurs) apparaissent dans une même colonne espacé par un ;

Dans l'exemple, je souhaite donc en colonne C Eurodance; Happy Hardcore

Est-il possible à l'aide d'un code VBA ou formules de restructurer le tableau ci-joint avec pour résultat :

Colonne A : Artiste

Colonne B : Titre

Colonne C : Genre(s)

Colonne D : Année

Colonne E : Débit

Colonne F : note

Merci d'avance pour vos propositions

14classeur1.xlsx (9.47 Ko)

Bonjour,

Dans le fichier joint la colonne C est déjà regroupée… Comment faites vous votre importation, et avec quel outil ? En utilisant PowerQuery (via l'onglet données > importer) vous pourriez résoudre le problème dès l'importation.

J'utilise MusicBee et il semble plus facile de retravailler le tableau dans Excel que dans la source

Je ne connais pas bien Power Query malheureusement

J'utilise MusicBee et il semble plus facile de retravailler le tableau dans Excel que dans la source

Je ne connais pas bien Power Query malheureusement

On peut vous aider pour ça, pas de problème.

Pouvez-vous partager le fichier d'export fourni par musicbee avant de l'ouvrir avec Excel ? Merci.

Dans MusicBee j'envoie directement les données dans le presse-papier, ensuite j'ouvre Excel puis dans Accueil, Coller, j'utilise l'assistant d'importation de texte afin de séparer les champs espacé par un ;

Je n'ai jamais utilisé MusicBee, mais si vous avez un option d'export de type CSV/JSON ou XML ce serait top. Sinon en attendant pouvez-vous coller votre presse-papier dans un fichier texte (.txt) et le partager ici ? Merci.

Ok merci pour votre aide

Je viens ci-joint d'exporter dans le bloc note

Je vous adresse juste un échantillon car j'ai environ 14000 lignes

Si je comprends la procédure sur 10 lignes je devrais y arriver pour 14000

8collection.txt (521.00 Octets)

Bonjour,

D'un point de vue purement technique il est tout à fait possible de faire des regroupements de cellules.

Courament le contenu des différentes cellules se distingue par le séparateur ";".

Dans ton cas tu utilises ce séparateur dans tes données texte. Ce comportement d'Excel est donc logique.

Si tu veux regrouper il faudrait au mieux que ton extraction n'utilise pas ce séparateur entre les futures colonnes à concaténer sinon il est impossible rapidement sans intervention humaine pour Excel de savoir "comment couper" ta ligne.

Maintenant il est possible lors de l'import (si tu le fait par code) ou après de faire ce regroupement mais pour cela il faut être certain que seule les données d'une seule colonne par ligne peuvent avoir été décomposées de la sorte. Dans ce cas on peut récupérer par ligne ce décalage par le nombre de cellule non vides après ta colonne "F" et décaler les valeurs en concaténant. Par contre si tu peux avoir plusieurs colonnes ainsi décomposées je ne vois pas comment sans consignes supplémentaires.

Donc une question ; confirmes-tu que dans tous les cas seule cette colonne "C" (le genre) peut être décomposée ? Si oui alors glop glop. Si non alors pas glop pas glop.

Oui, comme dit Alex c'est vraiment mal fichu cet export car il ne respecte pas les colonnes vides, et en plus de ça on perd les infos de la colonne 6 quand la colonne 3 déborde ! C'est vraiment étrange.

Du coup moi je verrai une solution VBA où on lit chaque ligne et à partir de la 3e colonne on joint les textes jusqu'à trouver une date. Puis on reprend le remplissage. C'est surement possible via PQ je vais essayer.

Je ne suis pas sûr d'avoir bien compris ta question

Je confirme cependant que seul le genre peut être multiple (Dans ma collection, une musique peut avoir 1, 2 ou 3 genres max à la fois)

Merci

Du coup moi je verrai une solution VBA où on lit chaque ligne et à partir de la 3e colonne on joint les textes jusqu'à trouver une date.

Pas possible non plus. Imagine un cas où cette cellule est vide. Ou encore si elle contient autre chose (de correcte) mais non une date (qui d'ailleurs n'est pas une date mais une année) par exemple pour un album sortie à cheval sur 2 ans (ou ayant fait l'objet d'une réédition). On pourrait avoir en valeur "1996 1997" ou "1996 puis 1997" ou je ne sais quoi encore.

Pour moi une seule solution ; par ligne compter le nombre de séparateurs (x).

Si x = 5 alors pas de décalage.

Sinon faire la concaténation depuis le premier séparateur jusque ((x-5)+1)ème séparateur puis continuer par colonne.

Je confirme cependant que seul le genre peut être multiple

Super.

Autre question : confirmes-tu que le séparateur ";" ne sera jamais utilisé comme valeur dans tes champs dans le fichier d'origine ? (autrement dit qu'il servira toujours de séparateur et pas compris dans le texte)

Vous m'avez perdu mais je confirme que le séparateur n'est jamais compris dans le texte

Il sert uniquement de séparateur

Je vois parler d'année ci-dessus mais l'année ne peut pas être multiple.... seul le genre musical

En PJ une façon de faire.

Le bouton te demandera de sélectionner ton fichier texte et fera l'import. Quel que soit le nombre de genres ils seront regroupés.

9collection.xlsm (21.11 Ko)

Attention je n'ai pas mis de gestion d'erreur si tu sélectionnes un fichier txt d'un autre format que celui que tu as transmis ici alors choisi bien ton fichier extraction.

Teste et dis nous.

Merci pour ton travail

Il y a juste un soucis, j'ai l'année qui est dans la même colonne que le genre du coup il y a un décalage pour le reste des colonnes

capture

Mon code fonctionne avec le txt que tu as envoyé précédemment pourtant.

As-tu un nouveau format dans ton txt réel ? Envoie ton gros txt ici.

PS Je dois sortir

Oui ça fonctionne !

Je te remercie pour ton investissement Alex020181

Toutefois j'ai trouvé une autre solution qui est d'exporter le genre en dernière colonne (Artiste; Titre; Année; Note; Débit; Genre)

Par la suite, il me suffit de concatener F, G, H

Avec Copilot j'ai réussi à obtenir un code VBA qui me donne un bon résultat

Merci encore pour votre aide

Bonsoir à tous !

Une approche via Power Query :

Mettre à jour le chemin du fichier txt à retraiter puis " Actualiser tout ".

Merci JFL

Par curiosité j'ai voulu tester ta solution car tu m'as sorti plusieurs fois de la galère mais j'ai un message lorsque j'actualise

Pourtant j'ai bien modifié le chemin du fichier txt

capture

Bonsoir à tous de nouveau !

Pouvez-vous vérifier ceci ?

Merci JFL

Magique comme d'habitude !

Seul bémol j'ai des musiques composées de plusieurs artistes séparés par une virgule et dans ce cas ça ne fonctionne pas

Les lignes sont vides

Rechercher des sujets similaires à "decalage structure tableau"