Macro INDEX EQUIV

Bonjour.

J'ai écrit la macro suivante pour reproduire la fonction INDEX EQUIV d'Excel.

J'a un tableau (A3:G29) dans un onglet "KPI OSW" et je veux que la macro me remplisse automatiquement dans la cellule (i,15) de l'onglet "OSW tracking sog" la valeur correspondante du tableau se rapportant à la cellule (i,1).

Or cette macro me remonte systématiquement la valeur de la dernière cellule qu'il cherche dans toutes les cellules

Pouvez-vous m'aider svp?

Sub osw_tracking_()

Bonsoir,

Une macro pour mettre une formule qu'il est plus rapide de mettre manuellement est quelque chose que je trouve plutôt absurde !

Ceci dit pour qu'une macro fonctionne, il faut respecter une syntaxe.

1) Les déclarations de variables sont à mettre en tête de procédure (règle élémentaire qu'il est recommandé de respecter). Une déclaration suffit : les mettre dans une boucle ! Peur qu'elles disparaissent entre deux tours pour les redéclarer à chaque tour ?

2) L'affectation de plages aux variables plages qui ne varient pas n'a non plus rien à faire dans la boucle, inutile de répéter la même opération à chaque fois !

3) Si on fait un calcul en VBA au moyen de fonctions Excel, l'utilisation de variable est possible (en utilisant une syntaxe VBA) pour obtenir le résultat.

Si on affecte une formule, la formule (ce qui est entre guillemets) sera reproduire telle quelle dans la cellule (traduite dans la langue de l'utilisateur) ; si on y utilise des variables, celles-ci n'ont pas d'existence en dehors de la procédure... On peut en utiliser pour renvoyer tel ou tel élément de la formule mais hors des parties que l'on met entre guillemets et en concaténant l'ensemble des parties de formule avec l'opérateur &. De surcroît, les variables étant des variables objets (Range) et une formule étant en tant que telle une valeur texte (String), c'est l'adresse de la plage qu'il faut renvoyer pour bâtir la formule, et éventuellement tenir compte de la nécessité de la renvoyer en référence absolues ou relatives....

Je passe sur les autres remarques possibles, mais la méthode me paraît compliquer à loisir l'objectif par du VBA qui n'apparaît pas nécessaire, qui outre les erreurs de syntaxe n'utilise pas d'instructions permettant de simplifier l'écriture du code...

A moins que le but soit un exercice VBA gratuit !

Cordialement.

Bonjour.

merci pour ces conseils.

Non ce n'est pas un exercice VBA. je veux cette macro "index equiv" car je veux l'inclure dans une macro plus globale qui me créé un tableau avec des données et j'ai besoin d'y ajouter cette fonction "index equiv" pour le remplir.

Du coup savez-vous me donner la solution svp?

Bonjour,

Lorsque j'interviens, j'évite autant que possible de me charger d'un travail dont je n'ai aucune envie, ni le cas échéant de le réaliser d'une façon qui ne me conviendrait pas à moi.

Donc si en l'état j'ai cru bon de soulever les principales erreurs ou anomalies que j'ai constatées, pour autant je ne me lance pas tant que je trouve l'opération inutile... Et le projet plus global évoqué ne comporte pour l'instant rien qui serait susceptible de modifier mon point de vue.

L'idée de penser une macro plus globale m'évoque seulement qu'il en est en programmation comme en beaucoup de domaines : les petites unités sont généralement plus efficaces que les grosses... (à voir ultérieurement).

Cordialement.

Bonjour.

C'est bon j'ai trouvé la solution

Merci pour votre aide.

Bonne journée.

Rechercher des sujets similaires à "macro index equiv"