formule index + equiv en vba et copie sur toutes les lignes non vides
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 :
Code:
1 2
| ActiveCell.FormulaR1C1 = _
"=INDEX(Feuil2!R6C12:R16C14,MATCH(Feuil1!RC[-6],Feuil2!R6C12:R16C12,0),2)" |
puis je tire cette formule jusqu'à la dernière ligne non vide mon tableau en feuille 1 :
Code:
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 |
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.
j'ai donc écris le code suivant avec l'aide de certains d'entre vous et mes très modestes connaissances :
Code:
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 |
mais je suis malgré beaucoup d'efforts incapable d'écrire la suite du code où pour ma formule index/equiv citée plus haut :
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.