Comment utiliser la fonction INDEX en language VBA ?

Gisamark

XLDnaute Junior
Comment utiliser la fonction INDEX en language VBA ? [RESOLU]

[RESOLU]

Bonsoir à tous,

J'arrive sans problème à utiliser INDEX directement dans les cellules excel.
En revanche, je n'y arrive pas en VBA... :(

J'ai utiliser l'enregistreur de macro pour voir ce que ça me donnait, et voilà le code obtenu :
("Fantôme" et "1. Importation" sont les noms de mes feuilles)

Sheets("Fantôme").Select
Range("K3").Select
ActiveCell.FormulaR1C1 = _
"=INDEX('1. Importation'!R[1]C[-5]:R[66]C[-5], Fantôme!R[-2]C)"

Ce code fonctionne sans problème.
Mais je ne veux pas du 66 entre crochet derrière le R.
A la place, je voudrais une variable Integer qui s'appelle DrnLigne.
Mais quand je remplace R[66] par R[DrnLigne], le code plante en disant :
"erreur d'execution 1004 : erreur définie par l'application ou par l'objet."

Merci d'avance. :)


PS : Si vous avez 5 minutes, pourriez-vous m'expliquer comment fonctionne INDEX en VBA ?
Je ne comprend rien à ces R[1]C[-5 ], FormulaR1C1, ...
 
Dernière édition:

BrunoM45

XLDnaute Barbatruc
Re : Comment utiliser la fonction INDEX en language VBA ?

Salut Gisamark,

Tu peux remplacer FormulaR1C1 par FormulaLocal plus simple à utiliser et surtout plus lisible ;)

Ce qui te donne :
Code:
Sheets("Fantôme").Range("K3").FormulaLocal = _
"=INDEX('1. Importation'!F4:F" & [COLOR=blue][B]DrnLigne[/B][/COLOR] & "; Fantôme!K1)"
Je ne suis pas certain des colonnes utilisées

Sinon :
FormulaR1C1 : créé une formule avec référence au format L1C1 (Ligne/Colonne) = R1C1 (Row/Column)

R[1]C[-5 ] : par rapport à la cellule ou tu as créées cette formule, tu as fais réfrence à la Row + 1 et la Column -5
Si on part de K3 cela devrait donner : C - 5 = K - 5 = F / R + 1 = 3 + 1 = 4

J'espère avoir été assez clair ;) :)

A+
 
Dernière édition:

bhbh

XLDnaute Barbatruc
Re : Comment utiliser la fonction INDEX en language VBA ?

Bonsoir,

Comme Bruno :):) t'a donné l'explication sur les [ et autres ], je me contenterai de te donner l'équivalent VBA de cette formule...

Code:
With Sheets("1. Importation")
    derlig = .[F65000].End(xlUp).Row
End With
With Sheets("Fantôme")
    .Range("K3").Value = Application.Index(Sheets("1. Importation").Range("F4:F" & derlig), .Range("K1"))
End With
Ici, on calcule la dernière ligne de la colonne F de la feuille 1. Importation
et ensuite, on introduit cette variable dans le calcul

Bonne soirée
 

Gisamark

XLDnaute Junior
Re : Comment utiliser la fonction INDEX en language VBA ?

Merci à vous deux, mon problème est résolu. :)

Il y a juste une petite erreur dans ton code Bruno : il faut remplacer ta virgule par un point-virgule.
Donc INDEX( ; ) au lieu de INDEX ( , )
(Je le dis au cas où quelqu'un d'autre lirait ce thread)

Et merci pour tes explications, c'était très clair !
Mais FormulaLocal est effectivement bien plus simple et je crois que ça va bien m'aider à l'avenir.

Bonne journée et vive ce forum ! ;)
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas