Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…