IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Pierre Fauconnier

Concaténer des données sous condition avec Power Query pour Excel

Noter ce billet
par , 27/09/2021 à 09h00 (1062 Affichages)
Salut.

Dernièrement, on demandait sur le forum comment réaliser en VBA la liste des adresses mails choisies dans un tableau...

Nom : 2021-09-27_085020.png
Affichages : 369
Taille : 10,1 Ko


En Excel 365, il existe les fonctions JOINDRE.TEXTE et FILTRE qui permettent de se passer de VBA. J'en parle dans ce billet => =JOINDRE.TEXTE(";";VRAI;FILTRE(Tableau1[Mail];Tableau1[Sélection]="x")). Si l'on dispose d'un abonnement 365, c'est me semble-t-il la solution la plus simple et rapide à mettre en place.


Nom : 2021-09-27_085131.png
Affichages : 43
Taille : 9,6 Ko




Sans Excel 365, on peut se tourner vers le VBA et une fonction personnalisée, avec le défaut qu'elle transforme le fichier en xlsm, ce qui n'est pas forcément souhaité ni accepté (limitations IT, fichier utilisé via l'explorateur WEB, ...):
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Function EmailsSelectionnes(Emails As Range, Choix As Range)
  Dim i As Long
 
  For i = 1 To Choix.Rows.Count
    If UCase(Choix(i).Value) = "X" Then EmailsSelectionnes = EmailsSelectionnes & Emails(i).Value & ";"
  Next
  If EmailsSelectionnes <> "" Then EmailsSelectionnes = Left(EmailsSelectionnes, Len(EmailsSelectionnes) - 1)
End Function

Nom : 2021-09-27_085326.png
Affichages : 33
Taille : 8,8 Ko



Depuis Excel 2010, on peut aussi se tourner vers Power Query, qui permet de combiner des listes en évitant le VBA (Là aussi, attention aux limites d'utilisation dans l'explorateur Internet). Pour cela, il faut:
  1. importer le tableau dans Power Query;
  2. filtrer les lignes;
  3. transformer en liste la colonne des emails filtrés;
  4. ajouter une étape permettant de combiner (concaténer) les éléments de la liste dans une chaine textuelle (étape à ajouter en saisie manuelle dans la ligne de commande);
  5. transformer cette chaine en table;
  6. renvoyer dans Excel.


Voici le script complet de la requête. Fidèle à mes habitudes et mes bonnes pratiques, je renomme les étapes en évitant les espaces qui alourdissent le script:
Code power query : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    AdapterTypes = Table.TransformColumnTypes(Source,{{"Sélection", type text}, {"Mail", type text}}),
    Filtre = Table.SelectRows(AdapterTypes, each ([Sélection] = "x")),
    ConvertirEnListe = Filtre[Mail],
    Combiner = Text.Combine(ConvertirEnListe,";"),
    ConvertirEnTable = #table(1, {{Combiner}})
in
    ConvertirEnTable

Nom : 2021-09-27_085848.png
Affichages : 32
Taille : 9,9 Ko

Power Query permet donc pas mal de choses dans la préparation et la transformation des données



Avez-vous d'autres exemples de listes à concaténer?
Utilisez-vous Power Query? Cet outil vous devient-il familier?


.

Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Viadeo Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Twitter Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Google Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Facebook Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Digg Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Delicious Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog MySpace Envoyer le billet « Concaténer des données sous condition avec Power Query pour Excel » dans le blog Yahoo

Commentaires