Utiliser un nom de plage défini sous Excel dans VBA
Bonsoir le Forum
Je voudrais utiliser dans une fonction VBA un nom de plage défini par le gestionnaire de noms sous Excel. En fait sous VBA je veux rechercher si une chaine se trouve dans la plage. J'ai pensé utiliser la méthode "Match" de WorksheetFunction en essayant:
Code:
isTrouve = Application.WorksheetFunction.Match(sName, Range([Workbooks(iWB_MainFile).name]!FRance), 0)
contient la chaine à rechercher dans le classeur
Citation:
"([Workbooks(iWB_MainFile).name]"
est le nom de la plage et sous Excel il fait référence à
Citation:
=RessProf!$A$2:$A$93
ou "RessProf" est le nom de la feuille où se trouve cette plage.
Merci pour vos indications sur mon/mes erreur(s)
Cordialement
clem256.
utiliser un nom de plage defini sous excel dans VBA
Bonjour,
la dernière proposition marche si l'on met le nom du classeur entre " " et si sname est un string (a, b ......)
si sname est une valeur numérique (même avec la plage au format texte), étrangement l'erreur 1004 est renvoyée.
avec "evaluate" le problème ne se pose pas.
cordialement.
utiliser un nom de plage defini sous excel dans VBA
bonjour,
la dernière proposition de gFZT82 marche très bien.
je ne comprends pas pourquoi (comme ecrit plus haut) avec une plage FRance contenant des lettres et des chiffres et le code suivant :
Code:
1 2 3 4 5 6 7
|
sname = " donnée choisie"
isTrouve = Application.WorksheetFunction.Match(sName, _
Workbooks("classeur1").Worksheets("feuil1").Range("FRance"), 0)
msgxbox istrouve |
si ma donnée choisie est "b" VBA renvoie le bon résultat
si ma donnée choisie est "1" VBA renvoie un message d'erreur comme je l'ai indiqué plus haut.
cordialement
utiliser un nom de plage défini sous Excel dans VBA
@ nibledispo
Peut-être que cette fonction ne reconnait pas "1" comme une string, mais le considère comme type nombre. Quelle est la valeur de l'argument type?
utiliser un nom de plage defini sous excel dans VBA
Bonsoir,
Les valeurs numériques de ma plage d'essai étaient au format texte. C'est pourquoi j'ai mis les guillemets.
Il est vrai toutefois (j'avais omis de le signaler) que si on ne met pas les guillemets le résultat est bien renvoyé.
Tout cela n'a aucun sens : le traitement ne peut faire un distinguo entre données numérique et données caractère d'une plage qui n'a qu'un seul format.
Peut être faut-il préciser le format de la plage FRance dans le code et nom dans Excel ? Je vais essayer.
Le mieux est de toute évidence de se passer de Worksheetfunction , formula et que sais-je encore.
Cordialement
utiliser un nom de plage défini sous Excel dans VBA
Merci pour ces remarques. Je vais fermer la dicussion et passer le point à résolu.