XL 2016 Basculer tableau 1 ligne/12 colonnes et un tableau 6 lignes/ 4 colonnes

cocro

XLDnaute Junior
Bonjour,
j'ai récupéré un fichier en ligne avec l'information temporelle spécifiée dans le nom de la variable, je souhaite convertir l'information en un tableau annuel

appui_faire_tableau1.jpg


La fonction transpose met les communes en colonnes, cela ne correspond pas à mon attente

Comment dois-je m'y prendre ?
je vous fourni un tableau exemple pour comprendre mon souci
Cordialement
Corinne
 

Pièces jointes

  • tableau1.xlsx
    14.9 KB · Affichages: 27

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cocro,
Voir en PJ avec :
VB:
=SIERREUR(INDEX($C$2:$H$4;EQUIV($B9;$B$2:$B$4;0);EQUIV($C9;$C$1:$H$1;0));"")
J'ai modifié Vra1_1 en Var1 pour avoir identité entre la ligne 1 et la colonne C.

ou encore en feuille 2
Code:
=SIERREUR(INDEX($C$3:$N$5;EQUIV($B10;$B$3:$B$5;0);EQUIV($C10;$C$2:$H$2;0)+EQUIV(D$9;$C$1:$N$1;0)-1);"")
si on rajoute une ligne Année. L'avantage est que la formule est la même partout.
 

Pièces jointes

  • tableau2.xlsx
    16.4 KB · Affichages: 6
Dernière édition:

cocro

XLDnaute Junior
Bonjour,
merci pour ces propositions.
Je serais assez tenté par la solution de Roblochon qui semble facile à mettre en oeuvre quand on connait Power Query. J'arrive à déchiffrer le processus mais je bloque sur où se fait le placement du résultat. Comment on fixe H9 comme recevant le résultat de la requête.
Sachant que j'ai une base de 150 communes à traiter, je ne peux laisser l'exemple sous les lignes de mon exemple.

L'idée de sylvanu est sympa également mais je ne sais pas comment ajouter en amont la transposition des deux premières colonnes (nom commune et libellé des variables). Comme les formules font référence au contenu de la cellule ((EQUIV($B10;$B$3:$B$5;0)), je tourne en rond

Merci pour un nouveau coup de pouce
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Dans l'onglet de ruban 'Données', bouton 'Requêtes et connexion'
Dans le panneaux des requêtes et connexions qui s'affiche à droite, sélectionnez la requêtes 'Résultats', click-droit puis sélectionnez 'Charger dans...'

1606399768136.png


puis sélectionnez vos options dans la fenêtre suivante.
1606399872811.png


bonne soirée
 

Rouge

XLDnaute Impliqué
Bonjour,

Autre proposition par formules,. Du fait qu'il y a une séparation (bande grisée), cela crée un décalage, il ne peut donc y avoir une formule unique.

J'ai ajouté un bouton qui recrée les formules au cas où elles seraient effacées par mégarde.

Cdlt
 

Pièces jointes

  • cocro_Basculer tableau 1 ligne_12 colonnes et un tableau 6 lignes_4 colonnes.xlsm
    21.5 KB · Affichages: 2

cocro

XLDnaute Junior
Merci pour ce partage. Je découvre petit à petit le power des macros excel :) et le sens du partage de la communauté ;)

cette solution peut s'envisager sur un petit nombre de lignes à transposer mais également à coup de copier/coller pour toute ma base (en l'occurrence j'ai 150 communes à retravailler de la sorte). Je vais rajouter deux lignes à votre macro pour récupérer également le nom des commune et le nom des variables.
A moins que vous ayez une alternative ?

Cordialement
 

Rouge

XLDnaute Impliqué
"cette solution peut s'envisager sur un petit nombre de lignes à transposer "
Non elle peut s'étendre à plusieurs communes, le seul ennui ce sont ces bandes grisées dans le tableau, sont-elles vraiment obligatoires? car elles font décaler la recherche et de par le fait, empêchent d'utiliser une formule unique.
 

Rouge

XLDnaute Impliqué
Voici, vous pouvez ajouter le nombre de communes à traiter, et cliquez sur le bouton.
le résultat sépare les communes par des couleurs alternées pour une meilleure lisibilité.
VB:
Sub Formules()
    Dim DerLig As Long, DerLig_Donnees As Long, i As Long
    Dim Decalage_R As Long, Decalage_S As Long
    Application.ScreenUpdating = False
    DerLig = Range("P" & Rows.Count).End(xlUp).Row
    DerLig_Donnees = Range("B" & Rows.Count).End(xlUp).Row
    Range("R9:S" & DerLig).Clear
    Decalage_R = 7
    Decalage_S = 1
    For i = 9 To DerLig Step 6
        Range(Cells(i, "R"), Cells(i + 5, "R")).FormulaR1C1 = "=INDEX(R1C2:R" & DerLig_Donnees & "C14,MATCH(RC16,R1C2:R" & DerLig_Donnees & "C2,0),ROW()-" & Decalage_R & ")"
        Range(Cells(i, "S"), Cells(i + 5, "S")).FormulaR1C1 = "=INDEX(R1C2:R" & DerLig_Donnees & "C14,MATCH(RC16,R1C2:R" & DerLig_Donnees & "C2,0),ROW()-" & Decalage_S & ")"
        Range(Cells(i + 3, "R"), Cells(i + 3, "S")).NumberFormat = "0.0%"
        Range(Cells(i, "P"), Cells(i + 5, "S")).Borders().Weight = xlThin
        If Cells(i - 1, "R").Interior.Color <> RGB(222, 235, 246) Then
            Range(Cells(i, "P"), Cells(i + 5, "S")).Interior.Color = RGB(222, 235, 246)
        Else
            Range(Cells(i, "P"), Cells(i + 5, "S")).Interior.Color = RGB(226, 239, 217)
        End If
        Decalage_R = Decalage_R + 6
        Decalage_S = Decalage_S + 6
    Next i
End Sub
 

Pièces jointes

  • cocro_Basculer tableau 1 ligne_12 colonnes et un tableau 6 lignes_4_2 colonnes.xlsm
    23.3 KB · Affichages: 3

Rouge

XLDnaute Impliqué
Bonjour,

Laissez tombé, prenez ce fichier plus performant et où vous n'avez pas besoin de saisir les communes en colonnes P, simplement à cliquer sur le bouton.
 

Pièces jointes

  • cocro_Basculer tableau 1 ligne_12 colonnes et un tableau 6 lignes_4_3 colonnes.xlsm
    103.2 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 305
Membres
103 174
dernier inscrit
OBUTT