XL 2016 Liste de combinaison possible

cdric78

XLDnaute Junior
Bonsoir,

J'ai besoin d'aide car je ne me maîtrise pas vraiment les macros et je cherche une solution pour me faire gagner énormément de temps.
J'ai un tableau avec des champs fusionnés et d'autres champs comportant plusieurs valeurs (colonnes G, K et P). Ici mon tableau fait 39 lignes mais ma source peut en contenir beaucoup plus.
Je souhaite créer toutes les combinaisons possibles dans un autre tableau qui serait ajoutés dans une autre feuille (ici le résultat attendu à été mis en exemple sur la Feuil1).
Il ne faut pas tenir compte des points d'interrogations dans le tableau source.
Pour info, j'ai ajouté un jeu de couleurs pour faciliter la compréhension (en temps normal, il n'y a pas de couleur.

J'espère que vous pourrez m'aider.
Merci par avance
Cdric78
 

Pièces jointes

  • classeur1.xlsx
    36 KB · Affichages: 34

cdric78

XLDnaute Junior
Bonjour,
Merci pour ta réponse, c'est effectivement un ami qui à publié sur l'autre forum. Nous avons essayé d'appliquer ta solution mais malheureusement sans succès (nous sommes novice). Nous cherchons une solution à ce problème hyper chronophage, donc j'ai essayer sur ce forum (en espérant trouver une solution). Si tu es en mesure de nous aider, merci par avance pour ton aide.
 

cdric78

XLDnaute Junior
Franchement non, nous cherchons vraiment à comprendre.
Nous avons essayer de comprendre comment fonctionnait Power Query que nous ne connaissons pas. Nous avons retrouver la requête mais nous ne trouvons pas la plage "DATA". Donc si tu veux bien nous guider, c'est avec plaisir sinon pas de souci.
 

chris

XLDnaute Barbatruc
RE

Indépendamment de PowerQuery j'ai indiqué
  • qu'il ne fallait rien mettre sous le tableau source
  • où se trouvait la définition de Data : gestionnaire de noms d'Excel
et le nouveau fichier ne tient compte d'aucune de ces 2 remarques
 

cdric78

XLDnaute Junior
J'ai bien retrouvé la définition de la plage "Data" dans le gestionnaire de noms. Je constate qu'elle débute en D1 jusqu'en colonne J.
Capture1.PNG

Tu m'indiques que je dois pas ajouter sous le tableau source alors comment puis-je faire si mon tableau source est plus grand avec d'autres données. Es -ce que je dois modifier la plage de "Data"?

J'ai essayé de modifier une valeur (D2)
dans le tableau source (compris dans la table "Data")et quand j'actualise j'ai un message d'erreur.

Capture2.PNG

Merci par avance!
 

chris

XLDnaute Barbatruc
RE

Je dis justement qu'il ne faut pas mettre un autre tableau sous le tableau source pour qu'il puisse s'agrandir et également que la formule puisse en calculer la taille sans être gêné par l'autre tableau

D1 parce c'est l'angle haut gauche et J parce que c'est la seule colonne où toutes les lignes sont remplies

Si je remplace D2 dans le tableau que j'ai fourni hier soir, cela fonctionne sans problème quand j'actualise
 

cdric78

XLDnaute Junior
Merci pour ces précisions.
Je ne vois pas où ça bloque (peut être la version d'Excel, je suis sur Excel 0216), mais en reprenant ton fichier d'hier soir, lorsque j'actualise j'ai toujours le message d'erreur "
capture3.PNG


Pourtant la table existe, c'est étonnant.
 

cdric78

XLDnaute Junior
Merci pour cette info, je vais voir mais ça risque d'être compliqué de faire une MAJ car je suis sur une version professionnelle et je n'ai pas la possibilité de faire les MAJ.
N'y aurait t'il pas une autre alternative sans passer par une plage nommées? Peut-être en ciblant une zone du tableau du genre D1:J1000
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

La moindre des choses en entreprise c'est qu'ils installent les correctifs car ce n'est qu'un bug corrigé parmi d'autres et vous risquez d'autres problèmes...

La requête actuelle ne prévoie pas qu'il y ait de lignes vides dans la source

Avant toute correction :
  • teste en indiquant D1:J 7 (8 je ne vois pas sur ton image)
  • vérifie et donne le numéro de révision de ta version 2016 : ficher, Compte en principe
 

cdric78

XLDnaute Junior
J'ai essayé de modifier la requête en mettant D1:J8 (correspondant à la table). Mais ça ne fonctionne pas. J'ai le message "Identificateur non valide);

VB:
let
    Source = Excel.CurrentWorkbook(){[[COLOR=rgb(184, 49, 47)]D1:J8[/COLOR]]}[Content],
    #"Index ajouté" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
    #"Type modifié" = Table.TransformColumnTypes(#"Index ajouté",{{"Column1", type any}, {"Column2", type any}, {"Column3", Int64.Type}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", Int64.Type}}),
    #"En-têtes promus" = Table.PromoteHeaders(#"Type modifié", [PromoteAllScalars=true]),
    #"Type modifié1" = Table.TransformColumnTypes(#"En-têtes promus",{{"1", type text}, {"2", type text}, {"3", Int64.Type}, {"4", type text}, {"5", type text}, {"6", type text}, {"7", Int64.Type}}),
    #"Rempli vers le bas" = Table.FillDown(#"Type modifié1",{"1", "2", "3", "4", "5"}),
    #"Fractionner la colonne par délimiteur4" = Table.ExpandListColumn(Table.TransformColumns(#"Rempli vers le bas", {{"2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "2"),
    #"Fractionner la colonne par délimiteur" = Table.ExpandListColumn(Table.TransformColumns(#"Fractionner la colonne par délimiteur4", {{"4", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "4"),
    #"Fractionner la colonne par délimiteur1" = Table.ExpandListColumn(Table.TransformColumns(#"Fractionner la colonne par délimiteur", {{"4", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "4"),
    #"Fractionner la colonne par délimiteur2" = Table.ExpandListColumn(Table.TransformColumns(#"Fractionner la colonne par délimiteur1", {{"5", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "5"),
    #"Fractionner la colonne par délimiteur3" = Table.ExpandListColumn(Table.TransformColumns(#"Fractionner la colonne par délimiteur2", {{"6", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "6"),
    #"Lignes triées" = Table.Sort(#"Fractionner la colonne par délimiteur3",{{"0", Order.Ascending}, {"2", Order.Ascending},{"5", Order.Ascending}, {"6", Order.Ascending},  {"4", Order.Ascending}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes triées",{"0"})
in
    #"Colonnes supprimées"

Sinon, j'ai trouvé ça:
 

Pièces jointes

  • capture4.PNG
    capture4.PNG
    5.1 KB · Affichages: 11

chris

XLDnaute Barbatruc
RE

Oui bizarre a priori c'est la version d'octobre

Ne change pas dans la requête, change dans la définition du nom dans le gestionnaire de noms
(en plus inutile d'éditer la requête car on fait tout par les menus ou la barre de formule, on ne code pas en dur)
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin