Worksheetfunction et r éférence à une plage nommée
4 réponses
J-Paul
Bonsoir,
Je galère avec un petit problème.
J'utilise application.Worksheetfunction pour faire appel à la fonction Excel
RechercheV.
Cette fonction recherche une valeur dans une plage nommée.
où Hor est la valeur recherchée et PlageHor, une variable string
correspondant au nom de la plage nommée.
Or cela ne marche pas !
En sachant que plus haut, j'ai utilisé cette méthode d'une façon un peu
différente avec succès : la plage n'est pas nommée mais je fournis ses
coordonnées :
Set plagetps = Workbooks(1).Sheets("PARAMETRES").Range("E1:F2")
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonsoir. Comme le montre ton second exemple, la plage plageHor doit être de type "range", pas "string". Cordialement. Daniel "J-Paul" a écrit dans le message de news: BFBFB393.126C6%
Bonsoir,
Je galère avec un petit problème. J'utilise application.Worksheetfunction pour faire appel à la fonction Excel RechercheV. Cette fonction recherche une valeur dans une plage nommée.
où Hor est la valeur recherchée et PlageHor, une variable string correspondant au nom de la plage nommée. Or cela ne marche pas !
En sachant que plus haut, j'ai utilisé cette méthode d'une façon un peu différente avec succès : la plage n'est pas nommée mais je fournis ses coordonnées :
Set plagetps = Workbooks(1).Sheets("PARAMETRES").Range("E1:F2")
Merci de votre avis sur la façon de faire référence à cette plage nommée pour une fonction Excel dans VBA. -- J-Paul Bérard
Bonsoir.
Comme le montre ton second exemple, la plage plageHor doit être de type
"range", pas "string".
Cordialement.
Daniel
"J-Paul" <news.j-paul@a-enlever.laposte.net> a écrit dans le message de
news: BFBFB393.126C6%news.j-paul@a-enlever.laposte.net...
Bonsoir,
Je galère avec un petit problème.
J'utilise application.Worksheetfunction pour faire appel à la fonction
Excel
RechercheV.
Cette fonction recherche une valeur dans une plage nommée.
où Hor est la valeur recherchée et PlageHor, une variable string
correspondant au nom de la plage nommée.
Or cela ne marche pas !
En sachant que plus haut, j'ai utilisé cette méthode d'une façon un peu
différente avec succès : la plage n'est pas nommée mais je fournis ses
coordonnées :
Set plagetps = Workbooks(1).Sheets("PARAMETRES").Range("E1:F2")
Bonsoir. Comme le montre ton second exemple, la plage plageHor doit être de type "range", pas "string". Cordialement. Daniel "J-Paul" a écrit dans le message de news: BFBFB393.126C6%
Bonsoir,
Je galère avec un petit problème. J'utilise application.Worksheetfunction pour faire appel à la fonction Excel RechercheV. Cette fonction recherche une valeur dans une plage nommée.
où Hor est la valeur recherchée et PlageHor, une variable string correspondant au nom de la plage nommée. Or cela ne marche pas !
En sachant que plus haut, j'ai utilisé cette méthode d'une façon un peu différente avec succès : la plage n'est pas nommée mais je fournis ses coordonnées :
Set plagetps = Workbooks(1).Sheets("PARAMETRES").Range("E1:F2")
On peut également utiliser Evaluate Sur l'exemple, 'produit' est le nom d'une table
Sub essai2() x = Evaluate("VLOOKUP(A15,produit,2,FALSE)") If IsError(x) Then MsgBox "Erreur" Else MsgBox x End If End Sub
J-Paul
Merci pour vos réponses et surtout JB pour son aide.
Il fallait effectivement ajouter Range au milieu de la fonction. Mes 2 situations fonctionnent finalement ainsi :
- 1er cas : en faisant référence à la plage par ses coordonnées
Dim plagetps As Range
Set plagetps = Worksheets("PARAMETRES").Range("A1:B5")
nomplage = Application.WorksheetFunction.VLookup(Tps, plagetps, 2, False) où Tps est une variable string passée par la fonction
- 2e cas : pour chercher dans une plage nommée
Hth = Application.WorksheetFunction.VLookup(Hor, Range(nomplage), 2, False) où nomPlage est donc une variable string issue de la ligne précédente et Hor une autre variable passée par la fonction.
Mais j'ai aussi beaucoup galéré pour une con... : il s'agit d'un planning et la variable Tps est un temps de travail sous la forme "80%". Evidemment, Excel m'avait automatiquement transformé cela en pourcentage si bien qu'au lieu de "80%", je récupérais "0,8" en guise de valeur, et en plus cela ne correspondait pas au type de variable déclaré. Piège pour un non-entraîné à Excel. Cordialement
-- J-Paul Bérard
dans l'article , JB à a écrit le 9/12/05 22:46 :
x = Application.VLookup(hor, Range(plageHor), 3, False) si plageHor est une variable
x = Application.VLookup(hor, Range("plageHor"),3, False) si plagehor est un champ nommé
Merci pour vos réponses et surtout JB pour son aide.
Il fallait effectivement ajouter Range au milieu de la fonction.
Mes 2 situations fonctionnent finalement ainsi :
- 1er cas : en faisant référence à la plage par ses coordonnées
Dim plagetps As Range
Set plagetps = Worksheets("PARAMETRES").Range("A1:B5")
nomplage = Application.WorksheetFunction.VLookup(Tps, plagetps, 2,
False)
où Tps est une variable string passée par la fonction
- 2e cas : pour chercher dans une plage nommée
Hth = Application.WorksheetFunction.VLookup(Hor, Range(nomplage), 2,
False)
où nomPlage est donc une variable string issue de la ligne précédente et
Hor une autre variable passée par la fonction.
Mais j'ai aussi beaucoup galéré pour une con... : il s'agit d'un planning et
la variable Tps est un temps de travail sous la forme "80%". Evidemment,
Excel m'avait automatiquement transformé cela en pourcentage si bien qu'au
lieu de "80%", je récupérais "0,8" en guise de valeur, et en plus cela ne
correspondait pas au type de variable déclaré. Piège pour un non-entraîné à
Excel.
Cordialement
--
J-Paul Bérard
dans l'article 1134164803.471757.78260@f14g2000cwb.googlegroups.com, JB à
boisgontier@hotmail.com a écrit le 9/12/05 22:46 :
x = Application.VLookup(hor, Range(plageHor), 3, False) si plageHor est
une variable
x = Application.VLookup(hor, Range("plageHor"),3, False) si plagehor
est un champ nommé
Merci pour vos réponses et surtout JB pour son aide.
Il fallait effectivement ajouter Range au milieu de la fonction. Mes 2 situations fonctionnent finalement ainsi :
- 1er cas : en faisant référence à la plage par ses coordonnées
Dim plagetps As Range
Set plagetps = Worksheets("PARAMETRES").Range("A1:B5")
nomplage = Application.WorksheetFunction.VLookup(Tps, plagetps, 2, False) où Tps est une variable string passée par la fonction
- 2e cas : pour chercher dans une plage nommée
Hth = Application.WorksheetFunction.VLookup(Hor, Range(nomplage), 2, False) où nomPlage est donc une variable string issue de la ligne précédente et Hor une autre variable passée par la fonction.
Mais j'ai aussi beaucoup galéré pour une con... : il s'agit d'un planning et la variable Tps est un temps de travail sous la forme "80%". Evidemment, Excel m'avait automatiquement transformé cela en pourcentage si bien qu'au lieu de "80%", je récupérais "0,8" en guise de valeur, et en plus cela ne correspondait pas au type de variable déclaré. Piège pour un non-entraîné à Excel. Cordialement
-- J-Paul Bérard
dans l'article , JB à a écrit le 9/12/05 22:46 :
x = Application.VLookup(hor, Range(plageHor), 3, False) si plageHor est une variable
x = Application.VLookup(hor, Range("plageHor"),3, False) si plagehor est un champ nommé