Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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?
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…