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

Résolu
Signaler
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
100
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
15 juillet 2009

Bonjour,

tu mets 123456 entre guillemets ou pas ?
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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.
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Oups !
Dim v As String
Bien sûr...!