XL 2016 Code VBA

Econo

XLDnaute Nouveau
Bonjour,
Je suis à la recherche d'un code permettant de concatener diverses données en plusieurs lignes.
Je joins le fichier qui sera plus parlant.
En feuille 1 = la base de données
en feuille 2 = le résultats souhaité*

En vous remerciant de votre aide.
 

Pièces jointes

  • Classeur1.xlsx
    203.9 KB · Affichages: 8

Cousinhub

XLDnaute Barbatruc
Bonsoir,
Voici une solution, par Power Query (Complément en natif depuis la version Excel 2016.
Comme tu pourras le voir, je n'ai pas exactement les mêmes résultats que toi, car je tiens compte du code en colonne R (et en ligne 3, tu n'en as mis aucun)
Ta base de données a été transformée en Tableau Structuré (TS), et le résultat est en feuil3.
Pour mettre à jour, dans le ruban "Données", il suffit de cliquer sur "Actualiser"
Afin de configurer (une bonne fois pour toutes) PQ, tu cliques sur "Données/Obtenir des données/Options de requête" et dans l'onglet "Confidentialité", tu valides "Toujours ignorer...." (ceci n'est qu'à faire une fois)
1695834163945.png


Le nombre de lignes ou de colonnes est indifférent, il faut juste que tu respectes le nom des colonnes présent dans ce fichier (colonnes "typ1ge", "No1", "Voie", "Commune", "code", "numéro ","Pot IP")
Tout le reste peut être modifié (nota, tu peux modifier ces colonnes aussi, mais il faudra alors adapter dans le code M (langage de PQ)
Bonne découverte...
Le code :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="T_data"]}[Content],
    #"Autres colonnes supprimées" = Table.SelectColumns(Source,{"typ1ge", "No1", "Voie", "Commune", "code", "numéro ","Pot IP"}),
    #"Espaces supprimés" = Table.TransformColumns(Table.TransformColumnTypes(#"Autres colonnes supprimées", {{"No1", type text}}, "fr-FR"),{{"No1", Text.Trim, type text}}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Espaces supprimés","?","",Replacer.ReplaceText,{"No1"}),
    #"Type modifié" = Table.TransformColumnTypes(#"Valeur remplacée",{{"Pot IP", Int64.Type}, {"typ1ge", Int64.Type}, {"numéro ", Int64.Type}, {"No1", Int64.Type}}),
    #"Colonnes fusionnées" = Table.CombineColumns(#"Type modifié",{"Voie", "Commune"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Rues"),
    #"Lignes groupées" = Table.Group(#"Colonnes fusionnées", {"Rues", "code", "typ1ge", "numéro "}, {{"Min", each List.Min([No1]), Int64.Type}, {"Max", each List.Max([No1]), Int64.Type}, {"Nombre", each List.Sum([Pot IP]), Int64.Type}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "Rue", each if [Min]=null and [Max]=null then [Rues] else if [Min]=[Max] then Text.From([Min]) & ", " & [Rues] else "du " & Text.From([Min]) & " au " & Text.From([Max]) & ", " & [Rues]),
    #"Autres colonnes supprimées1" = Table.SelectColumns(#"Personnalisée ajoutée",{"typ1ge", "Rue", "code", "Nombre", "numéro "})
in
    #"Autres colonnes supprimées1"
Le fichier :
 

Pièces jointes

  • PQ_Santos.xlsx
    224.5 KB · Affichages: 6

Discussions similaires

Réponses
45
Affichages
1 K

Statistiques des forums

Discussions
312 223
Messages
2 086 397
Membres
103 200
dernier inscrit
pascalgip