PB d'affichage d' une feuille dont le nom est un nombre

Résolu
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 30 mai 2007 à 15:58
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 30 mai 2007 à 22:54
Bonjour,

La macro ci-dessous (suppression d'une feuille dont le nom est dans une liste sur une page de sommaire) fonctionne parfaitement pour toute valeur non exclusivement numérique...
Si la valeur est (f) = Q123 : c'est bon,
Si la valeur est (f) = 123 : ça plante !
J'aimerais savoir où je me trompe.

f = ActiveCell.Value 'reprise de la valeur de la sélection
Range("AB2").Value = f 'copie de la valeur sélectionnée en "AB2"
v = Range("AB1").Value 'reprise de l'analyse faite par la formule en "AB1" (=RECHERCHEV...)
If (v) = "N" Then' la valeur ne correspond à aucune de la liste des feuilles
ChoixFaux.Show ' Avertissement d'erreur
Application.Run "RetourAuSommaire" ' retour au sommaire sans changement
Else ' la valeur correspond à une feuille dans la liste
Worksheets(Sheets(f).Name).Visible = True 'La feuille correspondante s'affiche,    PLANTAGE pour (f) 123456  (mais OK pour (f) Q1213456)
Worksheets(Sheets(f).Name).Select ' est sélectionnée,
Application.DisplayAlerts = False' est autorisée à être affacée sans rappel,
ActiveWindow.SelectedSheets.Delete ' et est effacée définitivement (retour au sommaire)

Merci pour toute aide

5 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
30 mai 2007 à 22:34
Salut,

Tu n'as cerrtainement pas déclaré la variable f de type String, à coup sûr c'est du Variant.

Soit :
Dim f As String
f = "123"
Sheets(f).Select

Soit :
Dim f  'donc variant
f = 123
Sheets(Cstr(f)).Select

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
30 mai 2007 à 16:03
Bonjour,

tu mets 123456 entre guillemets ou pas ?
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
30 mai 2007 à 16:13
Je crois (je dis bien crois car je ne connais par VBA) savoir que pour VBA : Sheets(f)correspond à la feuille de rang f et pas à la feuille dont le om a la valeur de f ...

Il me semble que tu peux accéder à une feuille par son numéro d'ordre 1), par son nom interne 2), ou par son nom externe 3).
 
1) Worksheets(n)
2) Feuilln
3) Worksheets("Feuilln" ) 
 
pour le nom interne, il me semble que c'est du genre  "(Name)" et que la propriété Name coçrrespond au nom externe

Vérifie donc.
Je ne sais par contre pas si tu peux nommer une feuille sans commencer par un caractère non numérique.

C'est là ma limite en VBA.
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
30 mai 2007 à 22:50
Bingo Mortalino !

Voilà le code ENFIN corrigé grâce à tous (et toi plus particulièrement)

f = ActiveCell.Value 'reprise de la valeur de la sélection
Range("AB2").Value = f
'copie de la valeur sélectionnée en "AB2"
Dim v asstring

v = Range("AB1").Value 'reprise de l'analyse faite par la formule en "AB1" (= RECHERCHEV...)
If (v) = "N" Then
' la valeur ne correspond à aucune de la liste des feuilles
ChoixFaux.Show
' Avertissement d'erreur
Application.Run "RetourAuSommaire" ' retour au sommaire sans changement
Else ' la valeur correspond à une feuille dans la liste

Worksheets(Sheets( v ).Name).Visible = True
'La feuille correspondante s'affiche, 
Worksheets(Sheets(v
).Name).Select ' est sélectionnée,
Application.DisplayAlerts = False
' est autorisée à être affacée sans rappel,
ActiveWindow.SelectedSheets.Delete
' et est effacée définitivement (retour au sommaire)

Merci à vous
0

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

Posez votre question
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
30 mai 2007 à 22:54
Oups !
Dim v As String
Bien sûr...!
0