XL 2013 Worksheet_Change - liste déroulante et aller sur un onglet

GADENSEB

XLDnaute Impliqué
Hello Le forum........

Je bosse sur un truc tt simple. mai je coince à un endroit

Dans l'onglet INTERFACE en J10, j'ai une liste déroulante de tous mes onglets.

par défaut tous sont masqués à l'ouverture du fichier

Le but :
Cliquer sur la liste pour choisir l'onglet voulu
L'onglet devient visible et on va dessus
je maintiens l'onglet INTERFACE visible aussi.

Du coup j'ai ce code

Dans un module je déclare ma variable pulique :
Code:
Public ChoixOnglet As Worksheet

Dans l'onglet INTERFACE :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

With shI
'If Intersect(Range("J10"), Target) Is Nothing Then Exit Sub

If Target.Address = Range("J10").Address Then
' Sheets(Target.Value).Select
ChoixOnglet = Target.Value
Call AfficheChoixOnglet
End If
End With
End Sub

Enfin ma macro d'affichage de l'onglet

Code:
Sub AfficheChoixOnglet()
Dim cptr As Byte

For cptr = 1 To ThisWorkbook.Sheets.Count
    If Sheets(cptr).Name = ChoixOnglet Then
        Sheets(cptr).Visible = 1
        ChoixOnglet.Select
    End If
Next
For cptr = 1 To ThisWorkbook.Sheets.Count
    If Sheets(cptr).Name = "INTERFACE" Then
        Sheets(cptr).Visible = 1
        ChoixOnglet.Select
    End If
Next
End Sub


J'ai ce message d'erreur

upload_2017-6-22_9-21-44.png


QQn aurait une idée ?

Merci à vous

Bonne Journée
 

GADENSEB

XLDnaute Impliqué
If Sheets(cptr).Name = ChoixOnglet Then

Pour préciion, la macro est dans un module.
je l'ai placé dans la feuille INTERFACE mai cela ne change rien

Code:
Sub AfficheChoixOnglet()
Dim cptr As Byte

For cptr = 1 To ThisWorkbook.Sheets.Count
    If Sheets(cptr).Name = ChoixOnglet Then
        Sheets(cptr).Visible = 1
        ChoixOnglet.Select
    End If
Next
For cptr = 1 To ThisWorkbook.Sheets.Count
    If Sheets(cptr).Name = "INTERFACE" Then
        Sheets(cptr).Visible = 1
        ChoixOnglet.Select
    End If
Next
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonsoir GADENSEB
Bonsoir pierrejean , Le Fil , Le Forum
Juste pour pouvoir vous saluer Lol
une adaptation du Code (Fonctionnel de pierrejean)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$B$1" Then
  For n = 1 To Sheets.Count
   With Sheets(n)
         .Visible = IIf(.Name = "INTERFACE" Or .Name = Target.Value, True, False)
      If .Name = Target.Value Then .Select
   End With
  Next n
 End If
Application.ScreenUpdating = True
End Sub
Bonne fin de Soirée
Amicalement
Jean marie
 

Si...

XLDnaute Barbatruc
Bonsoir

On n’est jamais trop prudent : si la liste de validation disparait ... oups ! o_O

Voici 2 exemples, le premier avec une vraie liste déroulante (pas de validation) et le second, déjà proposé, plus complet.
 

Pièces jointes

  • aller vers Feuil.xlsm
    23.4 KB · Affichages: 45
  • Aller vers onglet.xls
    39 KB · Affichages: 39

Discussions similaires

Réponses
2
Affichages
499

Statistiques des forums

Discussions
312 171
Messages
2 085 931
Membres
103 049
dernier inscrit
plt