Capturer le nom d'une feuille à l'aide de Application.Inputbox

[Résolu]
Signaler
Messages postés
7
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
26 octobre 2007
-
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
-
Bonjour. Je cherche à récupérer le nom d'une feuille avec la commande Application.InputBox dans VBA, mais je me heurte à un message d'erreur "Votre formule contient une référence externe non valide". Il s'agit certainement d'une erreur de "type", mais je ne trouve pas lequel. Quelqu'un peut-il m'aider ? Merci d'avance.

Exemple raccourci:

sub test()
NomFeuille = Application.InputBox("Nom de la feuille ?",,Type:=0)
Sheets(NomFeuille).Select
end sub

10 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
ok je comprend mieux ton probleme

je croyais que l'utilisateur devait saisir a la main le nom de la feuille.

d'apres ce que je comprend, tu veux qu'il clique directement sur la feuille a supprimer.

je pense que le inputbox n'est pas trop fait pour ca.
il attend une valeur, et tu lui place une reference (le R1 corespondant a la reference d'une cellule)

si tu veux vraiment proceder ainsi, a la rigueur e recupere pas le contenu de ta inputbox, mais supprime directement la feuile active apres.

enfin c'est pas terrible comme solution.

soit tu invite l'utilisateur a rentrer le nom de la feuille a la main, soit tu crée une forme avec un menu déroulant qui contient toutes les feuille, et l'utilisateur doit choisir avant de valider. si tu as le temps je pense que cette deuxieme solution est la mieux
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
137
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
6 décembre 2005

Set NomFeuille = ...
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
salut

je t'ai fait cette fonction, elle te permet de verifier aussi que le nom de la feuille saisi existe bien.
tu peux l'adapter a ta sauce...

Public Function SelectionneFeuille(nomFeuille As String) As Boolean
'tente de selectionner la feuille dont le nom est placé en parametre, et renvoi TRUE si l'opération a réussi
Dim feuille As Worksheet


SelectionneFeuille = True
For Each feuille In ThisWorkbook.Worksheets
If feuille.Name = nomFeuille Then
feuille.Select
Exit Function
End If
Next
MsgBox "La feuille " & nomFeuille & " n'existe pas !"
SelectionneFeuille = False
End Function
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Bonjour,

C'est ta macro qui n'est pas bonne.Celle-ci fonctionne.



Sub test()

Dim NomFeuille

NomFeuille = InputBox("Nom de la feuille ?")

Sheets(NomFeuille).Select

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
Messages postés
7
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
26 octobre 2007

Bonjour,
Merci à tous pour vos réponses. Après tests, aucune ne convient. Celle de [auteurdetail.aspx?ID=35535 aieeeuuuuu] m'a montré comment créer une fonction. Méthode que je n'avais pas encore utilisée.
Je ré-explique mieux mon problème:
J'affiches des résultats de calculs dans plusieurs feuilles.
J'aimerai pouvoir supprimer ces résultats uniquement dans une de ces feuille, en sélectionnant celle-ci dans le classeur.
En utilisant : Application.InputBox , je peux sélectionner la feuille, mais le résultat affiché dans l'InputBox est: ='R1'! et me donne une erreur si je valide, alors que moi j'aimerai avoir comme résultat, uniquement R1.
Merci pour vos réponses.
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
qu'entends tu par :
le resultat affiché par la inputbox est ='R1'
c'est dans ton programme que tu défini le contenu de ta inputbox

essaie de nous definir clairement ce que tu veux faire, et eventuellement mets nous un peu de code qu'on comprenne ce qui va pas, car la je vois pas trop quel est ton probleme. en fait je ne comprends pas d'ou sort le ='R1'
Messages postés
7
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
26 octobre 2007

Il s'agit de la fonction "Application.InputBox" qui affiche une InputBox dans Excel et permet de pointer une cellule ou un onglet en fonction du type défini. Dans mon cas, lorsque je clique sur l'onglet, la réponse indiquée dans la InputBox est 'R1'!.
Voici le code utilisé:

Dim NomFeuille As String
' Sélection de la feuille à supprimer
NomFeuille = Application.InputBox("Indiquez la feuille de résultat à supprimer !", "Indiquer feuille", "R1")
SelectionneFeuille (NomFeuille)
On Error GoTo Fin
Sheets(NomFeuille).Select
Fin:
Range("A1").Select
Sheets("1").Select
End Sub

Public Function SelectionneFeuille(NomFeuille As String) As Boolean
Dim Feuille As Worksheet
SelectionneFeuille = True
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name = NomFeuille Then
Feuille.Select
Exit Function
End If
Next
MsgBox "La feuille " & NomFeuille & " n'existe pas !"
SelectionneFeuille = False
End Function
Messages postés
7
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
26 octobre 2007

Petite précision: La réponse indiquée dans la InputBox est : ('R1'!). Le point d'exclamation n'est pas la fin de ma phrase.
J'ai aussi essayé avec la ligne de code suivante:

Set NomFeuille = Application.InputBox("Indiquez la feuille de résultat à supprimer !", "Indiquer feuille", Type:=0)

Idem en variant le type:

Type:=3 ou 10

Rien n'y fait !
Messages postés
7
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
26 octobre 2007

Merci a toi aieeeuuuuu .
Effectivement, l'entrée a la main ne pose pas de probleme, mais l'entree sous une forme, beaucoup plus.
En fait, je ne l'ai jamais fait. Je vais donc me replonger dans mon bouquin.
Mais tu as raison, la solution sous menu déroulant aura surement un aspect plus pro.
Merci de tes conseils avises.
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
de rien :)