création d'un nouveau menu contenant que les noms des feuilles

M

mcay

Guest
Bonjour,

Voila, je voudrai créer un nouveau menu que j'appellerai "Feuilles" qui contiendrai seulement les feuilles du classeur en cours.
J'ai un classeur qui contient plus d'une vingtaine de feuilles en cours, et cela serait plus pratique d'accéder à une feuille précise en cliquant dessus dans le menu "Feuilles".

Je vous en remercie d'avance de pouvoir m'aider.
 
P

phil

Guest
Bonjour
La réponse de Thierry est très bien mais pas dans le cas où il y a beaucoup de feuilles. J'avais pris sur le forum il y a un certain temps cette macro qui est super bien. Je me permet de la redonner. J'avoue que je ne comprends rien au contenu mais le résultat est génial.

Sub Voir_Feuilles()
' Permet l'affichage d'une boîte de dialogue
' qui s'adapte en fonction du nombre de feuilles ECRITES
' pour accéder directement à la feuille souhaitée !
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

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 = "Voir la section souhaitée..."
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
CelluleEnCours = ActiveCell.Address
Range("A:S").Select
ActiveWindow.Zoom = True
Range(CelluleEnCours).Select
ActiveWindow.Zoom = 100
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
 
L

luc

Guest
Salut à tous,

Je ne sais pas si c'est la solution que tu cherches, mais elle me permet de resoudre le même probleme.

Sub bio()
'
' bio Macro
' Macro enregistrée le 06/06/01 par A.T.I.R.
'
Dim pat As String
Dim tri As String
Dim bio As String
Dim cel As String


Sheets("MENU").Select ' recopie de la cellule selectionnée dans "menu"
ActiveCell.Select
ActiveCell.Copy
Range("H1").Select
ActiveSheet.Paste
pat = Range("H1")


If pat = "" Then ' Controle qu'il y a bien eu un e cellule selectionnée
MsgBox ("Il faut choisir un nom!!!")

Exit Sub
Else




Sheets(pat).Select 'selection de la feuille correspondant au de nom
Range("b1").Select 'selectionné dans "menu
tri = ActiveCell

Range("c1") = tri

bio = "BIOLOGIE" + tri
'Selection d'une zone précise dans le feuille "nom"
Application.Goto Reference:=bio


'Routine permettant d'eviter que la zone selectionnée reste en surbrillance
Application.ScreenUpdating = False
Range("k1").Select ' selectionne une cellule de la zone
cel = ActiveCell
Range(cel).Select
Application.ScreenUpdating = True



End If

End Sub



(b1) correspond a une cellule qui contient le numero du trimestre en cours, calculé à partir de la date du jour. Ceci me permet d'aller sur la zone de la feuille "nom" qui correspond au trimestre.



Voila voili. c'est peut etre lourd, etrange .... mais ca marche


Luc
 
@

@+Thierry

Guest
Bonsoir ce fil....

Juste pour ceux/celle qui ne peuvent charger le fichier "MenueFeuilles"...

Le code : (ne le ratez pas il est si petit !!!)

Sub Menu()
Application.CommandBars("Workbook tabs").ShowPopup 500, 200
End Sub


Il peut y avoir autant de feuille que l'on veut... Ce code les montrera.
Pourquoi se compliquer la vie autant...

Bonne Nuit
@+Thierry
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 017
Messages
2 104 584
Membres
109 084
dernier inscrit
mizab