Bonjour, une nouvelle fois je viens solliciter votre aide
Voici une formule index equiv que j'ai dans un tableau en feuille1 de mon classeur :
=INDEX(Feuil2!$L$6:$N$16;EQUIV(Feuil1!M2;Feuil2!$L$6:$L$16;0);2) en colonne S
et la même formule avec l'enregistreur de macro :
puis je tire cette formule jusqu'à la dernière ligne non vide mon tableau en feuille 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2ActiveCell.FormulaR1C1 = _ "=INDEX(Feuil2!R6C12:R16C14,MATCH(Feuil1!RC[-6],Feuil2!R6C12:R16C12,0),2)"
Mon problème réside dans le fait que : ma plage Feuil2!R6C12:R16C14 ou Feuil2!$L$6:$N$16 et ma colonne Feuil2!R6C12:R16C12 ou Feuil2!$L$6:$L$16 doivent être des plages dynamiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sheets("Feuil1").Activate Cells(2, 19).Select ' ActiveCell.FormulaR1C1 = _ ' "=INDEX(Feuil2!R6C12:R16C14,MATCH(Feuil1!RC[-6],Feuil2!R6C12:R16C12,0),2)" 'formule enregistrée avec l'enregistreur de macro ' Range("S2").Select ' Selection.AutoFill Destination:=Range("S2:S3563") 'copie colle la formule jusqu'à la dernière ligne non vide du tableau ' Range("S2:S3563").Select
j'ai donc écris le code suivant avec l'aide de certains d'entre vous et mes très modestes connaissances :
mais je suis malgré beaucoup d'efforts incapable d'écrire la suite du code où pour ma formule index/equiv citée plus haut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 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 Dernlign As Long DernLigne = Range("A" & Rows.Count).End(xlUp).Row 'jusqu'à la dernière ligne non vide de la feuille 1 Dim DernLigne1 As Long DernLigne1 = Range("A" & Rows.Count).End(xlUp).Row 'jusqu'à la dernière ligne non vide de la feuille 2 Dim maPlageDynamiq As Range Dim DernLigneDynamiq As Long, DernColonneDynamiq As Integer 'dernière ligne de la colonne L de la feuille 2 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 de la ligne 6 de la feuille 2 DernColonneDynamiq = Sheets("Feuil2").Cells(6, Cells.Columns.Count).End(xlToLeft).Column 'première colonne du tableau croisé dynamique en feuille 2 Set maPlageDynamiq = Sheets("Feuil2").Range(Cells(6, 12), Cells(DernLigneDynamiq, DernColonneDynamiq)) 'plage dynamique de référence pour la fonction index/match
maPlagedynamiq doit remplacer Feuil2!R6C12:R16C14.
DerColonneDynamiq doit remplacer Feuil2!R6C12:R16C12.
et recopier la formule sur chaque ligne jusqu'à la dernière ligne non vide de la feuille 1 en colonne S à partir de S2
si une bonne âme pouvait m'aider ce serait super sympa.
Merci à tous.
Partager