nairolftessub
Messages postés7Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention26 octobre 2007
-
6 déc. 2005 à 14:46
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 2011
-
8 déc. 2005 à 10:22
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
A voir également:
Capturer le nom d'une feuille à l'aide de Application.Inputbox
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 7 déc. 2005 à 15:39
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
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 6 déc. 2005 à 15:25
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
nairolftessub
Messages postés7Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention26 octobre 2007 7 déc. 2005 à 08:36
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.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 7 déc. 2005 à 11:18
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'
nairolftessub
Messages postés7Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention26 octobre 2007 7 déc. 2005 à 11:40
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
nairolftessub
Messages postés7Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention26 octobre 2007 7 déc. 2005 à 13:53
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)
nairolftessub
Messages postés7Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention26 octobre 2007 7 déc. 2005 à 16:13
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.