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:
C

Compte Supprimé 979

Guest
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 modification par un modérateur:

Cousinhub

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:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth