Bonjour
tu as deux problèmes:
1-dans la ligne
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tableau, j + 1, False)
tableau ne correspond à rien, je pense que tu veux faire une recherche dans tab1 ce qui se traduit par
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, False)
2-dans la même ligne (modifiée)
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, False)
ta valeur cherchée tab1(k, j) + 1 n'existe pas puisqu'elle correspond à (100 + k * 100) + 1, comme tu as positionné le dernier paramètre à false, cela signifie que tu cherches la correspondance exacte. Comme elle n'existe pas, tu as une erreur. Pour éviter un plantage, trois solutions:
a-limiter la recherche à des valeurs existantes:
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) , tab1, j + 1, False)
b-passer le dernier paramètre à true ce qui permettra de renvoyer la valeur la plus approchante.
teff(k, j) = Application.WorksheetFunction.VLookup(tab1(k, j) + 1, tab1, j + 1, True)
c-établir une gestion d'erreur pour gérer le cas ou la valeur cherchée n'existe pas
On error goto 'renvoie à une routine de gestion d'erreur perso
On error resume next 'en cas d'erreur passe l'exécution à la ligne suivante, à réactiver ensuite la gestion normale par On error goto 0
Ces trois solutions fonctionnent sur ton code, à toi de choisir la plus adaptée.
rappel de la syntaxe
Application.WorksheetFunction.VLookup(valeurcherchéeencolonne1detableaudedonnées,tableaudedonnées, collonedetableaudedonnéesàrenvoyer,valeurapprochante)
Cordialement, A+
Message édité par: yeahou, à: 29/06/2005 21:50