Bonjour,
je viens de découvrir les List.Accumulate, via l'article : https://excel-downloads.com/threads...-avec-list-accumulate.20080604/#post-20625927
En revanche, j'ai un cas particulier et je n'arrive pas à trouver la bonne formule,
j'en ai une qui fonctionne mais qui n'est pas optimisée et ralentie le traitement, le sens de la boucle n'est pas bon :
j'ai une extraction (plusieurs milliers de lignes) dans un fichier texte qui contient des stocks de produits & dans une des colonnes, j'ai un nom d'emplacement.
Dans les emplacements, il y a le nom de la ville ou son code postal, malheureusement pr moi, il y a d'autres informations dans les libellés d'emplacement (info sur l'emplacement et/ou le format du produit) et il y a bien un standard mais différent pour chaque type d'emplacement, ce qui fait que je ne peux pas décomposer les données facilement :
ex :
Temp-Paris-BB
Temp-Paris-SAC
DECLASSE59000
RETOUR75000
Vente-BB2-Lille
je lit cette extraction avec Power Query dans Excel et en améliore l'affichage.
j'ai voulu nettoyer les emplacements pour avoir les villes au propre :
qui marche très rapidement sur tous les emplacements en une fois, sauf qu'il faut que je le fasse avec une trentaine de chaîne et il est possible que je doive en ajouter d'autre dans le futur !
je me suis donc dit que je pourrais mettre tte ses chaines ("Temp", "BB", ..) à supprimer dans une table à part :
NettoyageEmplacement[Find]
j'ai trouvé cette formule :
Sauf que pour moi, le List.Accumulate, travaille sur chaque ligne d'emplacement, une par une, ce qui ralenti le traitement.
j'ai testé de faire un mélange des deux en dupliquant la colonne et en essayant de faire le replacer en boucle sur tte les chaines à supprimer, mais ça tombe en erreur :
quelqu'un aurait une piste ?
je viens de découvrir les List.Accumulate, via l'article : https://excel-downloads.com/threads...-avec-list-accumulate.20080604/#post-20625927
En revanche, j'ai un cas particulier et je n'arrive pas à trouver la bonne formule,
j'en ai une qui fonctionne mais qui n'est pas optimisée et ralentie le traitement, le sens de la boucle n'est pas bon :
j'ai une extraction (plusieurs milliers de lignes) dans un fichier texte qui contient des stocks de produits & dans une des colonnes, j'ai un nom d'emplacement.
Dans les emplacements, il y a le nom de la ville ou son code postal, malheureusement pr moi, il y a d'autres informations dans les libellés d'emplacement (info sur l'emplacement et/ou le format du produit) et il y a bien un standard mais différent pour chaque type d'emplacement, ce qui fait que je ne peux pas décomposer les données facilement :
ex :
Temp-Paris-BB
Temp-Paris-SAC
DECLASSE59000
RETOUR75000
Vente-BB2-Lille
je lit cette extraction avec Power Query dans Excel et en améliore l'affichage.
j'ai voulu nettoyer les emplacements pour avoir les villes au propre :
PowerQuery:
=Table.ReplaceValue(#"étape précédente","Temp-","",Replacer.ReplaceText,{"Ville"})
je me suis donc dit que je pourrais mettre tte ses chaines ("Temp", "BB", ..) à supprimer dans une table à part :
NettoyageEmplacement[Find]
j'ai trouvé cette formule :
PowerQuery:
= Table.AddColumn(#"étape précédente", "Ville", each List.Accumulate(
List.Numbers(0, Table.RowCount(NettoyageEmplacement)),
[Emplacement],
(A,B) => Text.Replace(A, NettoyageEmplacement[Find]{B},"")))
Sauf que pour moi, le List.Accumulate, travaille sur chaque ligne d'emplacement, une par une, ce qui ralenti le traitement.
j'ai testé de faire un mélange des deux en dupliquant la colonne et en essayant de faire le replacer en boucle sur tte les chaines à supprimer, mais ça tombe en erreur :
PowerQuery:
= List.Accumulate(NettoyageEmplacement[Find],"",
(state,current)=> Table.ReplaceValue(#"étape précédente",{current},"",Replacer.ReplaceText,{"Ville"}))
quelqu'un aurait une piste ?