OVH Cloud OVH Cloud

Liste et onglets

5 réponses
Avatar
TOM
Bonjour,

Dans un userform, je voudrais accéder aux feuilles d'un classeur par une
liste. Une bonne âme pourrait-elle me renseigner sur la macro à utiliser ?

D'avance merci.

Tom

5 réponses

Avatar
lSteph
Bonjour,
Exemple avec un combobox,
(tu peux enlever le Unload Me s'il s'agit d'un uf en showmodal false mais
cette propriété n'est pas directement disponible en 97)

Private Sub ComboBox1_Change()
Dim strF As String
strF = ComboBox1
Unload Me
ActiveWorkbook.Sheets(strF).Activate
End Sub

Private Sub Userform_initialize()
Dim i As Byte
ComboBox1.Clear
For i = 1 To ActiveWorkbook.Sheets.Count
ComboBox1.AddItem Sheets(i).Name
Next
End Sub

'lSteph

"TOM" a écrit dans le message de news:
443c1574$0$19717$
Bonjour,

Dans un userform, je voudrais accéder aux feuilles d'un classeur par une
liste. Une bonne âme pourrait-elle me renseigner sur la macro à utiliser ?

D'avance merci.

Tom



Avatar
papou
Bonjour
Avec un Userform comprenant une listbox et un bouton de commande, code à
placer dans ton userform :
Private Sub CommandButton1_Click()
If Me.ListBox1.ListIndex = -1 Then Exit Sub
Worksheets(ListBox1.Value).Activate
Me.Hide
End Sub
Private Sub UserForm_Initialize()
For i = 1 To Sheets.Count
Me.ListBox1.AddItem Sheets(i).Name
Next i
End Sub

Cordialement
Pascal

"TOM" a écrit dans le message de news:
443c1574$0$19717$
Bonjour,

Dans un userform, je voudrais accéder aux feuilles d'un classeur par une
liste. Une bonne âme pourrait-elle me renseigner sur la macro à utiliser ?

D'avance merci.

Tom



Avatar
lSteph
...rectification, on peut enlever le unload me, même si showmodal=true

"lSteph" a écrit dans le message de news:
%
Bonjour,
Exemple avec un combobox,
(tu peux enlever le Unload Me s'il s'agit d'un uf en showmodal false mais
cette propriété n'est pas directement disponible en 97)

Private Sub ComboBox1_Change()
Dim strF As String
strF = ComboBox1
Unload Me
ActiveWorkbook.Sheets(strF).Activate
End Sub

Private Sub Userform_initialize()
Dim i As Byte
ComboBox1.Clear
For i = 1 To ActiveWorkbook.Sheets.Count
ComboBox1.AddItem Sheets(i).Name
Next
End Sub

'lSteph

"TOM" a écrit dans le message de news:
443c1574$0$19717$
Bonjour,

Dans un userform, je voudrais accéder aux feuilles d'un classeur par une
liste. Une bonne âme pourrait-elle me renseigner sur la macro à utiliser
?

D'avance merci.

Tom







Avatar
ed
Je ne suis pas spécialiste, loin s'En faut, mais j'a itrouvé cette macro qui
me plait bien.
En espérant que cela te soit utile
ed


Sub AccesSection()
'code diffusé par René Roy, mpfe
' Permet l'affichage d'une boîte de dialogue pour l'accès
' à la feuille de son choix
Dim i As Integer
Dim TopPos As Integer
Dim SheetCount As Integer
Dim PrintDlg As DialogSheet
Dim CurrentSheet, FeuilleDépart As Worksheet
Dim cb As OptionButton
Application.ScreenUpdating = False

' Ajoute une feuille de dialogue temporaire
Set CurrentSheet = ActiveSheet
Set FeuilleDépart = ActiveSheet
Set PrintDlg = ActiveWorkbook.DialogSheets.Add
PrintDlg.Visible = xlSheetHidden

SheetCount = 0

' Ajoute les boutons d'option
TopPos = 40
For i = 1 To ActiveWorkbook.Worksheets.Count
Set CurrentSheet = ActiveWorkbook.Worksheets(i)
' Ne tient pas compte des feuilles vide ou masquées
If Application.CountA(CurrentSheet.Cells) <> 0 And _
CurrentSheet.Visible Then
SheetCount = SheetCount + 1
PrintDlg.OptionButtons.Add 78, TopPos, 150, 16.5
PrintDlg.OptionButtons(SheetCount).Text = _
CurrentSheet.Name
If CurrentSheet.Name = FeuilleDépart.Name Then _
PrintDlg.OptionButtons(SheetCount).Value = xlOn
TopPos = TopPos + 13
End If
Next i

' Positionne les boutons OK et Annuler
PrintDlg.Buttons.Left = 240

' Dimensionne la hauteur, la largeur et le titre de la bte de dialogue
With PrintDlg.DialogFrame
.Height = Application.Max _
(68, PrintDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = "A quelle feuille souhaitez-vous accéder ? "
End With

' Change l'ordre de tabulation des boutons OK et Annuler
' afin de donner le focus au premier bouton d'option
PrintDlg.Buttons("Button 2").BringToFront
PrintDlg.Buttons("Button 3").BringToFront

' Affiche la boîte de dialogue
FeuilleDépart.Activate
Application.ScreenUpdating = True
If SheetCount <> 0 Then
If PrintDlg.Show Then
Application.ScreenUpdating = False
For i = 1 To SheetCount
If PrintDlg.OptionButtons(i).Value = xlOn Then
Worksheets(PrintDlg.OptionButtons(i).Caption).Activate
'autre code selon besoin
End If
Next i
End If
Else
MsgBox "Toutes les feuilles sont vides."
End If

' Supprime la feuille de dialogue temporaire (sans message d'avertissement)
Application.DisplayAlerts = False
PrintDlg.Delete
End Sub
Avatar
TOM
Bonjour,

Merci beaucoup pour vos réponses.
Je vais essayer tout de suite.

A bientôt.
Tom