Bonjour à tous !
Je poste sur ce forum car j’ai un problème sur une formule visant à regrouper les informations de 7 colonnes en une. Je m’explique : je dois extraire les données d’un questionnaire pour un évènement. Chaque personne s’inscrit en renseignant nom prénom et fonction et peut ajouter jusqu’à 6 invités en renseignant les mêmes informations. Lorsque j’extrais ces informations j’ai donc 7 colonnes de noms, 7 colonnes de prénoms et 7 colonnes de fonction. Je souhaiterais que tous les noms (invités ou pas) se retrouve dans une seule et même colonne pour faciliter le traitement de la donnée, et de même pour les prénoms et les fonctions sans passer par VBA que je ne maitrise pas. J’ai donc imbriqué les formules INDIRECT, SI, LIGNE et NBVAL (peut-être un peu à la bourrin). Cette formule (présente en AK de l’onglet Questionnaire à coller du document) est clairement un echec. Je ne parviens pas à retirer l’entête du tableau, certains noms sont manquants et d’autres informations sont rapatriées dans ma colonne AK… La formule en AL vise seulement à enlever les cellules vides. Auriez-vous une idée de ce que je pourrais faire pour pallier mes problèmes ?
Bonjour,
Une proposition avec Power Query
Quelques précisions, si le nom est renseigné, il faut impérativement le prénom et le service, sinon il peut y avoir un décalage.
Je n’ai pas non plus pris en compte la colonne E (première colonne de « Nom »)
Pour mettre à jour le tableau, ruban « Données », « Actualiser tout » Réunion des colonnes.xlsx (23,5 Ko)
Merci Cow18 pour votre réponse ! Ce n’est pas tout à fait ce que je souhaite car j’aimerais que les noms/prénoms/services se suivent les uns en dessous des autres. Ainsi même si j’ai Nom 1 en cellule G1, Nom 2 en celulle K1, nom 3 en cellule G2, je voudrais que nom 1 aille en AK1, Nom2 aille en AK2 et nom 3 aille en AK3 (l’ordre des noms importent peu en réalité mais l’important est que chaque cellule ait une seule information, donc dans mon exemple ici un seul nom).
Merci pour votre réponse ! C’est exactement ce que je souhaitais. J’ai pris un peu de temps à répondre car je ne suis pas du tout familière avec Power Query (pour ainsi dire je ne l’ai jamais utilisé). J’ai l’impression que vous avez renommer les étapes (peut-être pas) et je n’arrive pas à reproduire et donc à comprendre ce que vous avez fait. Est-ce que vous pourriez m’expliquer ?
Merci encore pour votre temps !
Bonjour,
Effectivement, j’ai fait du codage manuel, à l’inverse d’un codage par le biais des barres d’outils de l’éditeur PQ
Dans l’éditeur, en cliquant sur « Éditeur avancé », on peut voir le code (également étape par étape, en affichant la barre d’outils à partir du ruban « Affichage » de l’éditeur)
Ce code, le voici commenté
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
// je charge la base
SelCol = Table.SelectColumns(Source, List.Select(Table.ColumnNames(Source),each _<> "Nom" and Text.StartsWith(_, "Nom") or Text.StartsWith(_, "Prénom")or Text.Contains(_, "service"))),
// je ne conserve que les colonnes commençant par "Nom" (sauf la première), par "Prénom" ou contenant "service"
UnPivot = Table.UnpivotOtherColumns(SelCol, {}, "Attribut", "Valeur"),
// je dépivote entièrement le tableau (j'ai enlevé tout nom de colonne entre {}
Titres = Table.AddColumn(UnPivot, "Titres", each if Text.StartsWith([Attribut],"Nom") then "Nom" else if Text.StartsWith([Attribut],"Prénom") then "Prénom" else "Service"),
//J'ajoute une colonne où je définis le nom de la future colonne pour les prochaines étapes
GroupBy = Table.Group(Titres, {"Titres"}, {{"Tbl", each _[Valeur]}}),
// je regroupe toutes les données selon la colonne "Titres", en mettant toutes les données de la colonne [Valeur] sous forme de liste
Final = Table.FromColumns( GroupBy[Tbl], GroupBy[Titres])
// je transpose pour obtenir le résultat final
in
Final
Les commentaires sont à la suite des //
Bon courage