XL 2021 demander à l'utilisateur de selectionner un onglet

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 !

vgendron

XLDnaute Barbatruc
Bonjour à tous

je souhaite demander (via un inputbox?) à l'utilisateur de selectionner un onglet

Le code suivant, ca fonctionne mais l'utilisateur doit cliquer SUR une cellule de l'onget
VB:
sub testselection
Dim onglet As Worksheet
Dim FLT1 As Range
Dim NomOnglet As String
 
    'on demande à l'utilisateur de sélectionner un onglet "source"
     Set FLT1 = Application.InputBox("Veuillez cliquer dans une cellule de l'onglet source", Type:=8)
     NomOnglet = FLT1.Parent.Name
     Set onglet = Sheets(FLT1.Parent.Name)
end sub

ce que j'aimerais, c'est de ne pas avoir à cliquer DANS la feuille, juste un simple clic sur l'onglet
Auriez vous une idée?
 
Solution
Bonjour Vgendron,
Avec un peu d'aide de Gemini, une approche possible en PJ, le choix s'effectue avec une liste.

Test5.gif
Re

VB:
'USF avec 2 boutons et 1 listbox
Private Sub cmdOK_Click()
If Me.lstOnglets.ListIndex = -1 Then
    MsgBox "Veuillez sélectionner un onglet.", vbExclamation
    Exit Sub
End If

NomOnglet = Me.lstOnglets.Value
Me.Hide
End Sub

Private Sub cmdAnnuler_Click()
NomOnglet = ""
Me.Hide
End Sub

Private Sub UserForm_Initialize()
Dim Ws As Worksheet

For Each Ws In ThisWorkbook.Worksheets
    Me.lstOnglets.AddItem Ws.Name
Next Ws
End Sub

et ton module

VB:
Public NomOnglet As String

Sub TestSelectionOnglet()
Dim Ws As Worksheet

NomOnglet = ""
UserForm1.Show

If NomOnglet = "" Then
    MsgBox "Sélection annulée.", vbInformation
    Exit Sub
End If

Set Ws = Worksheets(NomOnglet)

MsgBox "Onglet sélectionné : " & Ws.Name
End Sub
 

Pièces jointes

Bonjour à tous,

Ma p'tite méthode. Cliquer sur le bouton "Choisir un autre onglet".

Dans le module de ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   IndexSheet = ActiveSheet.Index
End Sub

Dans le module de Userform1:
VB:
Private Sub UserForm_Initialize()
   IndexSheet = 0
   Beep
   Label1 = "Veuillez sélectionner un autre onglet que " & vbLf & _
         """" & ActiveSheet.Name & """, SVP..."
   Application.OnTime Now() + 1# / 24 / 60 / 60, "Detecter"
End Sub

Private Sub UserForm_Terminate()
   MsgBox "Vous venez de sélélectionner l'onglet:" & vbLf & """" & Sheets(IndexSheet).Name & """", vbInformation
End Sub

Dans Module1:
VB:
Public IndexSheet As Long

Sub Detecter()
   Do: DoEvents: Loop Until IndexSheet <> 0
   Unload UserForm1
End Sub

Sub AfficherUserform1()
   UserForm1.Show vbModeless
End Sub
 

Pièces jointes

hello tous !
je vois que ca vous inspire
je n'ai pas encore regardé toutes vos propositions, merci d'avance à tous, mais la première que je vois, celle de Sylvanu, correspond à celle que j'avais trouvé depuis

VB:
Sub TestSelSheet()
    Set FeuilleActive = ActiveSheet 'sauvegarde de la feuille active'
    Dim X As String
    Application.CommandBars("Workbook tabs").ShowPopup 400, 300
    X = ActiveSheet.Name
    FeuilleActive.Activate 'on revient sur la feuille initiale'
End Sub
 
la version de BernardXld/Patrick: je la garde de coté, ca peut toujours servir;
celle de Phil69970: je vais m'en inspirer pour la version "USF" de mon appli
Celle de mapomme: à part le fait qu'elle ne revient pas sur l'onglet initial, idem je la garde: ne serait ce que pour l'utilisation du doevents, userform_terminate

merci à tous !
et vu que je n'ai pas encore eu l'occasion de vous le souhaiter:
bonne année !!
 
- 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

Réponses
3
Affichages
285
Réponses
3
Affichages
139
Retour