Feuille excel et indice...à l'aide!!!!!

cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005 - 28 avril 2004 à 11:20
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 - 28 avril 2004 à 15:20
voila, j'ai un problème avec un programme : je veux selectionner une feuille excel dans un classeur excel contenant environ 50 feuilles...
Je vous mets les deux trois lignes de programmes que jiai effectué :

Private Sub command_Click()
Dim R as string
Dim sheet As Object
Dim exldoc As Object
Dim exlapp As Object


R = InputBox("Entrer le nom de la rue désirée :") 'appelle la feuille voulue

Set exlapp = CreateObject("excel.Application")
Set exldoc = exlapp.Workbooks.Open("cheminxl")
Set sheet = exlapp.ActiveWorkbook.Sheets("R") 'problème d'indice en dehors de la plage



End Sub

le problème vient de l'indice..... erreur 9..
pouvez vous m'aider, SVP.
Merci

11 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
28 avril 2004 à 11:27
Bonjour,

comme tu mets ta variable R entre guillements, vb comprend par là que tu souhaites ouvrir la feuille nommée R et non pas ce que l'utilisateur a saisi.

Il faut que tu mettes :
exlapp.ActiveWorkbook.Sheets(R)

Fanny
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
28 avril 2004 à 11:52
merci Fanny, j'ai effectué ta soluce mais j'ai tjs le même problème... erreur 9 indice en dehors de la plage...
je sais plus quoi faire.... :)
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
28 avril 2004 à 12:02
Es-tu sûr que la réponse R correspond bien à un des onglets du classeur ?
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
28 avril 2004 à 12:27
merci à tous les deux....
en quelques sortes vous avez débloqué le problème d'indice de la plage...
le problème c'est que maintenant la suite de mon programme marche bien mais toujours avec la même feuille excel...
je vais manger et je verais....
merci..
ps : activeworkbook ne me prendrai pas la feuille active d'excel et non la feuille désirée... je sais pas...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
28 avril 2004 à 12:59
J'ai pas testé mais une question me trotte dans la tête

Set exlapp = CreateObject("excel.Application")
Set exldoc = exlapp.Workbooks.Open("cheminxl")
Set sheet = exlapp.ActiveWorkbook.Sheets("R")


Pourquoi tu n'as pas fait ça

Set exlapp = CreateObject("excel.Application")
Set exldoc = exlapp.Workbooks.Open("cheminxl")
Set sheet = exldoc.Sheets("R")
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
28 avril 2004 à 13:07
je viens d'essayer et ça ne marche pas non plus, il ne me séléctionne pas la feuille souhaité (je mets le nom exact de l'onglet dans l'inputbox pour choisir ma feuille).... et le fait de mettre les guillemets entraîne encore l'erreur 9.
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
28 avril 2004 à 14:17
Oui c'est normal, c'est ce que je te disais plus haut, si tu mets entre guillemets le R, il prend cela comme une chaine de caractères et non pas la valeur de ta variable.

Attention :
Dim affiche As String
affiche = "Coucou"
MsgBox (affiche) --> Coucou
MsgBox ("affiche") --> affiche


Quand je fais ça :
Dim rep As String
Dim sheet As Worksheet
rep = InputBox("feuille ?")
Set sheet = Worksheets(rep)
sheet.Select

là ça fonctionne mais en mettant sheet en tant que Worksheet et non en tant que Sheet.

Essaies donc comme ça (et retire moi tes #@!§% de guillemets :-p )

Fanny
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
28 avril 2004 à 14:26
Autre chose en passant,
Pour éviter des mauvaises entrées dans ton inputbox (et générer des erreurs), pourquoi ne crées tu pas plutot une userform avec une liste déroulante contenant l'ensemble des noms des feuilles ?

Pour récupérer le nom de toutes les feuilles :

Dim chaine As String
For i = 1 To Sheets.Count
chaine = chaine & Sheets(i).Name & " "
Next i
MsgBox chaine

Au lieu de les mettre dans une String, mets les dans une liste :)

(j'espère t'avoir été utile)

Fanny
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
28 avril 2004 à 14:50
merci Fanny, ça marche enfin....
Ton idée pour la liste est excellente...la=e problème c'est que je ne vois pas comment l'intégrer dans mon programme.

voila le programme :

Private Sub command_Click()
Dim R as string
Dim sheet As Object
Dim exldoc As Object
Dim exlapp As Object

R = InputBox("Entrer le nom de la rue désirée :") 'appelle la feuille voulue

Set exlapp = CreateObject("excel.Application")
Set exldoc = exlapp.Workbooks.Open("cheminxl")
Set sheet = worksheets(R)
sheet.select

End Sub
0
cs_allfab Messages postés 76 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 25 juillet 2005
28 avril 2004 à 14:51
merci Fanny, ça marche enfin....
Ton idée pour la liste est excellente...la=e problème c'est que je ne vois pas comment l'intégrer dans mon programme.

voila le programme :

Private Sub command_Click()
Dim R as string
Dim sheet As Object
Dim exldoc As Object
Dim exlapp As Object

R = InputBox("Entrer le nom de la rue désirée :") 'appelle la feuille voulue

Set exlapp = CreateObject("excel.Application")
Set exldoc = exlapp.Workbooks.Open("cheminxl")
Set sheet = worksheets(R)
sheet.select

End Sub

voila comment faire ? je te remercie pour tout et heureusement qu'il y a des personnes comme toi,
merci bcp.
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
28 avril 2004 à 15:20
Donc voilà, pour faire à partir d'une liste tu dois d'abord créer une variable publique qui contiendra le choix de l'utilisateur pour le nom de la feuille :

Dim reponse As String (tu peux laisser R si tu préfères).

Puis tu crées une UserForm (que j'ai nommé FRMChoixFeuille) sur laquelle tu déposes une liste déroulante (que j'ai appelé LSTNomFeuilles) ainsi qu'un bouton de commande (CMDOK).

Puis code du bouton :
Private Sub CMDOK_Click()
If LSTNomFeuilles.MatchFound = True Then
reponse = LSTNomFeuilles.Value
FRMChoixFeuille.Hide
Else
MsgBox "Mauvaise entrée, recommencez"
End If
End Sub


code de l'activation de l'userform
<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>Private Sub UserForm_Activate()
LSTNomFeuilles.Clear
For i = 1 To Sheets.Count
LSTNomFeuilles.AddItem (Sheets(i).Name)
Next i
End Sub<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>

Et enfin, tu remplaces ta ligne
R = InputBox("Entrer le nom de la rue désirée :") 'appelle la feuille voulue

Par :
FRMChoixFeuille.Show
et le reste reste tel quel (sauf si tu changes le nom de la variable ;) n'oublies pas de la changer plus loin).

J'espère avoir été assez claire pour toi,

Fanny
0
Rejoignez-nous