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

  • Initiateur de la discussion Initiateur de la discussion GADENSEB
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Réponses
4
Affichages
243
Réponses
3
Affichages
665
Retour