1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Sub test()
'
' Macro4 Macro récuperer les montants du tableau croisé dynamique en feuille 2 pour les injecter dans la feuille 1
'=INDEX(Feuil2!$L$6:$N$16;EQUIV(Feuil1!M2;Feuil2!$L$6:$L$16;0);2)
Dim DernLigne1 As Long
DernLigne1 = Range("A" & Rows.Count).End(xlUp).Row
Dim maPlageDynamiq As Range
Dim DernLigneDynamiq As Long, DernColonneDynamiq As Integer
'dernière ligne colonne L
DernLigneDynamiq = Sheets("Feuil2").Range("L" & Rows.Count).End(xlUp).Row - 1 'ne selectionne pas la ligne total général ni les entêtes
'dernière colonne ligne 6
DernColonneDynamiq = Sheets("Feuil2").Cells(6, Cells.Columns.Count).End(xlToLeft).Column 'dernière colonne du tableau croisé dynamique
Set maPlageDynamiq = Range([Feuil2!L6], Sheets("Feuil2").Cells(DernLigneDynamiq, DernColonneDynamiq))
MsgBox maPlageDynamiq.Parent.Name 'test si la plage est bien sur la feuille 2 et oui
Dim maColonneDynamiq As Range
DernColonneDynamiq = Sheets("Feuil2").Cells(6, Cells.Columns.Count).End(xlToLeft).Column - 2 'dernière colonne du tableau croisé dynamique
Set maColonneDynamiq = Range([Feuil2!L6], Sheets("Feuil2").Cells(DernLigneDynamiq, DernColonneDynamiq)) 'colonne 1 du tableau croisé dynamique
MsgBox maPlageDynamiq.Parent.Name 'test si la plage est bien sur la feuille 2 et oui
Sheets("Feuil1").Activate
Cells(2, 19).Select
' ActiveCell.FormulaR1C1 = _
' "=INDEX(maPlageDynamiq,MATCH(Feuil1!RC[-6],maColonneDynamiq,0),2)"
' Range("S2").Select
' Selection.AutoFill Destination:=Range("S2:S" & DernLigne1)
ActiveCell.FormulaR1C1 = _
"=INDEX(Feuil2!R6C12 & maPlageDynamiq ,MATCH(Feuil1!RC[-6],Feuil2!R6C12 & maColonneDynamiq ,0),2)"
Range("S2").Select
Selection.AutoFill Destination:=Range("S2:S" & DernLigne1)
End Sub |
Partager