Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Power Query - Comment pivoter une chaine de caractères de longueur variable

Flx1er

XLDnaute Occasionnel
Bonjour,
Avec power query, il est relativement simple de pivoter des données.
Mais, mon problème est le suivant, je désire structurer les données de la colonne "Acte" du fichier joint
Le fichier dispose de 3 colonnes,
  • Id
  • Nb -> nombre d'occurrence "Acte"
  • Acte -> le nombre de caractères de cette colonne est variable, mais les données présentent sont structurées de la manière suivante :
DébutFinTaille
CP11818
Fr192911
Réal30356

Est ce réalisable avec power query

En vous remerciant de votre aide
Bien à vous
 

Pièces jointes

  • Acte.txt
    3.8 KB · Affichages: 16

chris

XLDnaute Barbatruc
Bonjour

Il faudrait être plus précis car avec des lignes du type
ALT+074 30 010501201801 1 ZZC+255 30 010501201801 2 ZFT+114 10 010501201801 1 ALQ+183 27 010501201801 1 ZFM+242 21 010501201809 1 ZFR+213 21 010501201809 1

car là 18 , 11 et 6 et ne donneraient rien il me semble
 

Flx1er

XLDnaute Occasionnel
Merci pour votre aide.
Je vais préciser mon propos par le détail de la pièce jointe Acte.xlsx
Les 2 premières lignes représentent le contenu des 2 premières lignes du fichier "Acte.txt".

A partir de la 5ième ligne, je souhaiterais avoir ce résultat mais en passant par Power Query :
  • avoir autant de lignes qu'il n'y d'occurrences : c'est à dire 6
  • chaque ligne de la colonne acte contient les 35 caractères de chaque occurrence : c'est à dire 35
  • découpage de chaque acte en appliquant la structure (pour l'exemple, j'utilise la formule STXT)
    • CP=STXT($C6;1;18)
    • Fr =STXT($C6;19;11)
    • Réal =STXT($C6;30;6)

Je vous remercie encore de votre aide
 

Pièces jointes

  • Acte.xlsx
    9.6 KB · Affichages: 8

Flx1er

XLDnaute Occasionnel
Pour simplifier ma demande, j'ai volontairement réduit la structure. En réalité, la structure en cours est la suivante :
LibelléDébutFinTaille
CP177
CSa8103
CMl11122
CMP113142
CMP215162
CI17182
Filler19191
Nb Réal20212
Date Réal22298
Nb P30312
Nb I32332
ED34352
Si il y des espaces multiples, alors il faut les garder.

Je ne comprends pas votre question : "Que fait-on des caractères en plus ?", car tous les caractères sont utiles

En vous remerciant
 

chris

XLDnaute Barbatruc
RE

Cela ne colle pas : tu élimines justement des espaces car après les 7 premiers tu as 9 espaces ...

Pas trop le temps ojd

Vois le fractionnement par nombre de caractères : une 1ère fois en lignes, l'autre en colonnes
 
Dernière édition:

Flx1er

XLDnaute Occasionnel
Bonjour Hasco,
C'est exactement le résultat attendu.
Pour bien appréhender cette technique, Je vais analyser votre méthode pour la comprendre.
Je vous remercie pour le temps que vous m'avez accordé
Bien à vous
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Je viens de changer le fichier de mon post précédent avec quelques petites amélioration.
Dans un premier temps et après filtrage des nb null la requête cherche les postitions de '+' dans la chaîne de caractère 'Acte'. Comme ces listes de postions et de longueur différente d'une ligne à l'autre, l'étape 'PlusLongue' combine ces listes de postions pour en retenir que les items uniques.
A partir de là la chaîne 'Acte' peut être explosée par positions puis les colonnes sont dépivotées sur Id
Le reste n'est qu'extraction et mise en forme.

Cordialement

P.S. ...arf je vois que vous avez sélectionné votre propre message comme solution. C'est bien
 

Flx1er

XLDnaute Occasionnel
Bonjour Chris,
Je ne comprends ou est l'incohérence. Tous les caractères sont à prendre en compte même les espaces. J'ai modifié la première ligne du fichier d'exemple "Acte.txt".
Sur les 3 premières occurrences, j'ai remplacé les espaces par des données, les 3 dernières occurrences n'ont pas été touchées.
En général, lorsque l'information est inconnue ou n'existe pas alors un espace est présent, ceci dans le but de respecter la structure du fichier
En espérant avoir été compréhensible
Cordialement
 

Pièces jointes

  • Acte1.txt
    3.8 KB · Affichages: 5

chris

XLDnaute Barbatruc
Bonjour

Si je prends
ALT+074 30 010501201801 1
7 caractères pour CP j'obtiens ALT+074
3 caractères suivants pour CSa j'obtiens 3 espaces
2 ... ... pour CMl j'obtiens 2 espaces
idem pour CMP1 et CMP2
puisqu'il y a 9 espaces après les 7 premiers caractères...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…