Fonction de recherche de feuille excel [Résolu]

niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 17 oct. 2005 à 09:35 - Dernière réponse : niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention
- 18 oct. 2005 à 14:31
bonjour,
j'ai une fonction me permettant de rechercher une feuille excel existanta afin de lui appliquer un traitement ultérieur:

Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function

mon problème se situe sur l'argument Nom
si je saisis l'argument nom à partir d'une textbox d'un formulaire, comme suit:

If WsExist(saisie2.Controls("txtnaff" & j).Value) = True Then
ActiveWorkbook.Sheets(saisie2.Controls("txtnaff" & j).Value).Select: GoSub coloration:
Else...

...pas de problème

par contre si je saisis l'argument à partir d'une cellule d'une autre feuille excel du style:

If WsExist(avancement!Range("a5").Value) = True Then
ActiveWorkbook.Sheets(avancement!Range("a5").Value).Select
Else...

....là j'ai une erreur d'excution de type "424"

ou est mon erreur?
Afficher la suite 

11 réponses

Meilleure réponse
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 14:31
3
Merci
Dim z$
For n = 5 To 7
If WsExist(Worksheets("avancement").Range("a" & n).Value) Then
z = Worksheets("avancement").Range("a" & n).Value
MsgBox (z)
ActiveWorkbook.Sheets(z).Select: GoSub calcul
End If
Next n: End

voila ça ça marche

Merci niikkoo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 17 oct. 2005 à 11:49
0
Merci
Ton erreur se situe ici si je ne m'abuse :
ActiveWorkbook.Sheets(avancement!Range("a5").Value).Select

En vba, il ne reconnait pas la syntaxe NomFeuille!Range ...
Il faut remplacer par :
ActiveWorkbook.worksheets("Avancement").range("A5").select

si bien entendu, ta feuille s'appelle Avancement ^^

Molenn
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 17 oct. 2005 à 14:45
0
Merci
hum non je crois que tu n'as pas saisi mon pb
le code que tu m'as fourni ne me permet que de sélectionner la cellule A5 de la feuille avancement
ce que je veux faire c'est sélectionner la feuille excel qui porte le nom (le numéro) inscrit dans la cellule A5 de la feuille avancement
effectivement la syntaxe NomFeuille!Range ne fonctionne pas (erreur de ma part j'avoue) ....mais pas plus que NomFeuille.Range...ou worksheets("Nomfeuille").Range... dans le cas ou NomFeuille est donné par la valeur de la cellule A5
voilà
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 17 oct. 2005 à 16:24
0
Merci
Ah ok ... Ce n'est pas très compliqué en fait.

2 étapes :
1 - Récupérer le nom de la feuille dans une variable :

Dim NomFeuille as string
NomFeuille = worksheets("Avancement").range("A5").value

2 - Sélectionner la feuille voulue
worksheets(NomFeuille).select

Molenn
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 09:47
0
Merci
effectivemment ça doit marcher
le problème vient du fait que dans mon exemple, et c'est ma faute, je me suis limité à range("a5") (car je testais déjà pour une cellule) alors que concrètement je voudrais l'étendre à une boucle for.... ça donnerait:

for n=..
...
ActiveWorkbook.Sheets(Worksheets("avancement").Range("a"& n).Value).Select:
...
next n

et là je ne sais pas passer range("a"&n) en variable
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 18 oct. 2005 à 10:26
0
Merci
Alors, pour cela, il te faut plusieurs variables.
Un truc du style (on va considérer que tu cherches sur la plage A10 à B20 ... Tant qu'à faire, si tu te poses la question pour les lignes en plus des colonnes :p) :

Dim NomFeuille as String
Dim Référence as string
Dim n as Integer

For n= 10 to 20.
Référence = "A" & n
NomFeuille = Worksheets("avancement").Range(Référence).Value
Worksheets(NomFeuille).select
Référence = "B" & n
NomFeuille = Worksheets("avancement").Range(Référence).Value
Worksheets(NomFeuille).select
Next n

Avec cette boucle, tu vas donc sélectionner à la respectivement les feuilles dont le nom sera dans les cellules A10, B10, A11, B11, ..., A20, B20.

J'ai pas envie de me fouler à créer la 2ème boucle imbriquée pour les colonnes, mais c'est faisable si tu as envie ^^

Molenn.
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 10:57
0
Merci
marche po
quelquesoit la manière de passer le nom de la feuille en argument VBA la rejette.... dans le cas que tu m'as fourni c'est une erreur de type 9
ce que je ne comprend pas c'est que le membre:

If WsExist(Worksheets("avancement").Range("a" & n).Value)

fonctionne alors que c'est ce membre qui rejette l'argument

ActiveWorkbook.Sheets(Worksheets("avancement").Range("a"&n).Value).Select
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 10:57
0
Merci
marche po
quelquesoit la manière de passer le nom de la feuille en argument VBA la rejette.... dans le cas que tu m'as fourni c'est une erreur de type 9
ce que je ne comprend pas c'est que le membre:

If WsExist(Worksheets("avancement").Range("a" & n).Value)

fonctionne alors que c'est ce membre qui rejette l'argument

ActiveWorkbook.Sheets(Worksheets("avancement").Range("a"&n).Value).Select
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 18 oct. 2005 à 11:10
0
Merci
A mon avis, ton problème se situe là parce que ce bout de code, je ne te l'ai jamais marqué :
ActiveWorkbook.Sheets(Worksheets("avancement").Range("a"&n).Value).Select

C'est soit Sheets(NomFeuille), soit Worksheets(NomFeuille) parce que les 2 arguments dans une même formule à mon avis, ça doit faire conflit.
Tu as essayé avec une variable pour désigner le nom de la feuille comme je t'ai indiqué ?

Le premier fonctionne parce que WsExist, c'est une fonction.
le 2ème, c'est un argument que tu rentres, et je pense que ça coince.
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 11:34
0
Merci
j'ai essayé de passer en variable
et rien n'y fait
il rejete l'argument sous quelque forme qu'il soit
niikkoo 50 Messages postés mercredi 20 juillet 2005Date d'inscription 4 septembre 2007 Dernière intervention - 18 oct. 2005 à 11:42
0
Merci
est-il possible de faire en sorte que la variable Nomfeuil soit indicée et que son indice corresponde au n que l'ontrouve dans range("a"&n)??

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.