oguruma
XLDnaute Impliqué
Suite et fin pour terminer ce billet sur le dégroupage en colonnes de données présentées en lignes qui fait référence au post ci-dessous.
	
	
		
			
				
					
						 
					
				
			
			
				
					
						
							 excel-downloads.com
						
					
					excel-downloads.com
				
			
		
	
Cette solution est à préférer aux 3 autres proposées. Elle a l'avantage d'une mise à jour plus dynamique en cas d'évolution de la source des données par la simple actualisation du tableau résultant.
Un peu de paramétrage et passage de paramètres à la requête... à voir pour les plus experts. cf. mes post sur le passage de paramètres dans une RQ powerquery
L'actualisation peut aussi se présenter via un bouton qui fera appel à du VBA pour actualiser la requêtes ou faire clic droit/actualiser sur le tableau...
A voir selon les besoins
	
	
	
	
	
		
	
		
			
		
		
	
				
			 
					
				Transposer en colonnes des blocs de données en lignes - via Macro
Suite de ce post https://excel-downloads.com/threads/transposer-en-colonnes-des-blocs-de-donnees-en-lignes-via-formules-let-lambda.20080381/  Comment y parvenir via une macro en VBA ?  Option Explicit   Sub DEGROUPER_LIGNES_COLONNES()          Dim DataSource As Range     Dim lngIndexRow As Long...
				 excel-downloads.com
						
					
					excel-downloads.com
				Cette solution est à préférer aux 3 autres proposées. Elle a l'avantage d'une mise à jour plus dynamique en cas d'évolution de la source des données par la simple actualisation du tableau résultant.
Un peu de paramétrage et passage de paramètres à la requête... à voir pour les plus experts. cf. mes post sur le passage de paramètres dans une RQ powerquery
L'actualisation peut aussi se présenter via un bouton qui fera appel à du VBA pour actualiser la requêtes ou faire clic droit/actualiser sur le tableau...
A voir selon les besoins
		PowerQuery:
	
	
	let
    //======================================================================================================================
    // Auteur : OGURUMA
    // Dégroupage en colonne d'un bloc de données en ligne
    //======================================================================================================================
 
    //======================================================================================================================
    // Quelle est la source des données
    // changer la valeur de au besoin
    // Name="Tableau1" ==> peut-être obtenu par un passage de paramètres
    //======================================================================================================================
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    //======================================================================================================================
    // Les modifications de types ne sont peut-être pas nécessaire. A voir selon les besoins
    //======================================================================================================================
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Rubriques", type text}, {"Informations", type any}}),
    //======================================================================================================================
    // Création des colonnes conditionnelles qui constitueront les données du tableau dégroupé
    // Ici on crée les colonnes nécessaires qui seront retenues
    // A adapter selon les rubriques présentes
    // Le tableau initial contient là-ici deux colonnes Rubriques et Informations - à adapter selon la source
    //======================================================================================================================
    CODE_ARTICLE = Table.AddColumn(#"Type modifié", "CODE_ARTICLE", each if [Rubriques] = "CODE_ARTICLE" then [Informations] else null),
    ENTREPOT = Table.AddColumn(CODE_ARTICLE, "ENTREPOT", each if [Rubriques] = "ENTREPOT" then [Informations] else null),
    STOCK_MAXI = Table.AddColumn(ENTREPOT, "STOCK_MAXI", each if [Rubriques] = "STOCK_MAXI" then [Informations] else null),
    STOCK_MINI = Table.AddColumn(STOCK_MAXI, "STOCK_MINI", each if [Rubriques] = "STOCK_MINI" then [Informations] else null),
    STOCK_ACTUEL = Table.AddColumn(STOCK_MINI, "STOCK_ACTUEL", each if [Rubriques] = "STOCK_ACTUEL" then [Informations] else null),
    EN_COMMANDE = Table.AddColumn(STOCK_ACTUEL, "EN_COMMANDE", each if [Rubriques] = "EN COMMANDE" then [Informations] else null),
    GESTIONNAIRE = Table.AddColumn(EN_COMMANDE, "GESTIONNAIRE", each if [Rubriques] = "GESTIONNAIRE" then [Informations] else null),
    //======================================================================================================================
    // On aligne les données
    //======================================================================================================================
    REMPLI_VERS_HAUT = Table.FillUp(GESTIONNAIRE,{"ENTREPOT", "STOCK_MAXI", "STOCK_MINI", "STOCK_ACTUEL", "EN_COMMANDE", "GESTIONNAIRE"}),
    //======================================================================================================================
    // On se débarrase des valeurs nulles qui occasionne le décalage
    //======================================================================================================================
    SUPPR_NULL = Table.SelectRows(REMPLI_VERS_HAUT, each ([CODE_ARTICLE] <> null)),
 
    //======================================================================================================================
    // Les colonnes de référence qui ont permi la ventilation des données ne servent plus
    // Les colonnes à conserver seront à adapter selon la source
    // Ici on conserve les colonnes conditionnelles crées
    //======================================================================================================================
    SUPPR_COL_REFERENCE = Table.SelectColumns(SUPPR_NULL,{"CODE_ARTICLE", "ENTREPOT", "STOCK_MAXI", "STOCK_MINI", "STOCK_ACTUEL", "EN_COMMANDE", "GESTIONNAIRE"})
in
    SUPPR_COL_REFERENCE 
	 
 
		 
 
		 
 
		 
 
		 
 
		