[VBA] Fonctions Excel dans une fonction VBA.

Fermé
wlikotae - 21 août 2008 à 11:49
 wlikotae - 21 août 2008 à 11:53
Bonjour,


Je cherche à faire une fonction de type RechercheV ou H, sauf qu'au lieu de chercher dans une colonne ou une ligne, il cherche dans un tableau (je l'ai donc appelé RechercheT ).

Il m'en est sorti la fonction suivante :
(DECALER(Index(Tableau, EQUIV(Valeur, C_L, 0), no_index_L-1), no_index_C, 0, 1, 1))

Valeur : la valeur cherchée
C_L : le tableau dans lequel sera recherché 'valeur', qui est un vecteur ligne ou colonne obligatoirement (à cause de Equiv() ).
Tableau : Tableau comprenant la valeur cherchée ainsi que le résultat de la fonction.
no_index_L, no_index_C : la position du résultat cherché par rapport 'valeur' dans 'tableau.


mais j'aimerais faire une fonction en VBA, plus facile à écrire et peut-être plus rapide à calculer.

Voici ce que j'ai fait :





Function RECHERCHET(Tableau As Range, C_L As Range, Valeur_cherchée As String, Ligne As Integer, Colonne As Integer) As String



Dim Aux As Integer
Aux = Ligne
Ligne = Aux - 1

Dim L_Val As Integer
L_Val = Application.WorksheetFunction.Equiv(Valeur_cherchée, C_L, 0)

Dim Cell_final As Range
Set Cell_final = Application.WorksheetFunction.Index(Tableau, L_Val, Ligne)


Dim Aux_Cell As Range
Set Aux_Cell = Cell_final
Set Cell_final = Aux_Cell.Offset(0, Colonne)

RECHERCHET = Aux_Cell.Value



End Function




Quand je l'utilises, primo il veut absolument que C_L soit un nombre, ce qui est absolument incompréhensible, mais complètement. Secondo, je crois qu'il n'utiliserait pas la fonction Equiv s'il dépassait l'étape précédante.


Auriez vous une solution à me proposer pour ça ? Je ne connais pas bien le langage VBA, j'y vais à tatillon et prend donc beaucoup de temps.

Merci :) .
A voir également:

1 réponse

Mince,

si les administrateurs pouvaient supprimer ce topic.
Je suis sur IE6 (et impossible de changer), je vois donc très mal le site, je pensais que ma question hier était mal passé.
0