Activer une feuille précise

V

Vériland

Guest
Dans un classeur qui contient un certain nombre feuille (on va dire 30), je voudrais pouvoir accéder rapidement à une feuille sans passer par les onglets...

Dans un premier temps :

- pourrait-on (grâce à une macro) ouvrir une boite de dialogue qui listerait l’ensemble des feuilles (avec leur nom) présentes dans le classeur …

et dans un deuxième temps :

- que dans cette même boite, on puisse accéder à une feuille en la sélectionnant directement dans la liste ?

Pour l’instant, j’arrive à compter les feuilles mais non à créer la liste. Si quelqu’un avait une réponse je suis preneur d’un petit exemple…

Merci à vous

A+ Vériland
 
B

Blandine

Guest
Voici le code qui te permet de choisir l'ouverture d'une feuille à partir d'un formulaire qui affiche toutes les feuilles disponibles :

Sub AccesSection()
'code diffusé par René Roy, mpfe
' Permet l'affichage d'une boîte de dialogue pour l'accès
' à la section 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

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 = "Quelle section 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
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


*************************************************
 
V

Vériland

Guest
Alors là... je suis vert...

c'est exactement ce que je voulais... Merci à toi Blandine et à René ROY son concepteur...

PS : Ti, si tu retrouves la solution dans tes archives, n'hésites pas à le remettre en ligne...

"Excel"ante soirée à tous

A+ Vériland
 
V

Vériland

Guest
Bonsoir Sylvain,

clic droit peut-être, mais par exemple un classeur qui contient plusieurs feuilles dont la case <onglets de classeur> dans <outils options> est désactivée... le clic droit sur la barre d'onglets devient superflu...

A+ Vériland
 
G

Gérard

Guest
Bonsoir a tous

Ce fichier pourrait vous convenir

@+ bonne fin de soiée
Gérard
 

Pièces jointes

  • SelectFeuilles.zip
    16 KB · Affichages: 83
  • SelectFeuilles.zip
    16 KB · Affichages: 76
  • SelectFeuilles.zip
    16 KB · Affichages: 81
G

Gérard

Guest
Bonjour,

Ne serait ce pas plus simple en nommant une cellule de chaque feuille dans la zone nom ?

Ca répond a son attente
1- la liste des feuilles
2- Accés direct

ou bien aurais je mal saisi la question ?

Gérard
 
G

Gérard

Guest
re bonjour,

Ily a aussi la solution d'un clic droit en bas à gauche de la feuille
c'est à dire sur les flêches de défilement des onglets
Meme résultat : liste des feuilles et accés direct

ça évite de réinventer la roue non ?

Gérard
 
V

Vériland

Guest
Je ne sais pas si les trois derniers messages sont du même Gérard...

En tout cas, Je n'ai pas pris le temps de répondre à la première solution (de Gérard) qui proposait le fichier joint "selectFeuilles.zip" (voir plus haut). Je l'ai essayé et je l’ai depuis adapté dans mon classeur, il est vraiment très bien fait... en fait il répond à toutes mes questions, je le privilégie même à la solution de Blandine qui dit en passant est aussi intéressant, (voir plus haut)…

Pour répondre aux derniers messages (de Gérard), il est possible de nommer une cellule mais cela implique à chaque fois un paramétrage sur les nouvelles feuilles… (plus compliqué à mettre en place lorsque les feuilles s’enregistrent automatiquement)…

D’autre part on peut aussi faire défiler les feuilles grâce aux flèches…c’est très pratique… mais si le classeur contient… allez… 15 feuilles… et que chacune de ces feuilles portent un nom à rallonge du style…« planning mois de SEPT 2002 Gérard 01»…et ainsi de suite…pour accéder à la feuille 14 puis revenir à la 2…devient à mon avis vite acrobatique…Vous allez me dire : pourquoi faire simple quand compliqué ça marche ?…


Personnellement je préfère accéder aux différentes feuilles de mon classeur d’une manière rapide, par le biais d’une boite de dialogue qui s’affiche au centre de l’écran ; j’ai d’autant plus, pris pour habitude de travailler avec Excel en mode plein écran, onglets désactivés…

Bref, la solution pour moi est dans "selectFeuilles.zip" (voir plus haut)… Si quelqu’un a pris le temps de lire ce message c’est vraiment un bon forum.

J’en profite pour faire une autre demande :

Je voudrais renommer une feuille dans une boite de dialogue. En fait il serait intéressant d’ajouter ce bouton dans l’exemple de Gérard "selectFeuilles.zip" (voir plus haut)… et d’avoir dans cette boite de dialogue une option supplémentaire : RENOMMER…

Merci à celui ou celle qui aura la réponse…

A+
 
G

Gérard

Guest
Bonjour à tout les Gérard

dans le le fichier "selectFeuilles.zip" que j'ai mis sur le site, il suffit de créer un bouton sur le UserForm et de lui mettre le code suivant et voila le tour est joué

Sub CmdRenommer_Click()
Nouveau_Nom_Feuille = Application.Dialogs(xlDialogWorkbookName).Show
End Sub

a+
 
V

Vériland

Guest
et voilà, yaka demander..

merci Gérard pour l'astuce "renommer une feuille"... j'ose à peine faire une autre demande car je ne voudrais pas paraître ennuyeux... mais je me lance…

En fait, il manquerait juste une option sur la boite de dialogue… celle de supprimer une feuille sélectionnée…

A en voir la qualité du forum, je ne doute pas de la réponse…

Merci pour votre aide
 
G

Gérard

Guest
et voilà, comme tu dit yaka demander..

Tout est dans le fichier imprimer à utiliser sans modération si quelqu'un trouve une amélioration je suis et nous sommes preneur

slt,

a+
 

Pièces jointes

  • Imprimer.zip
    20.5 KB · Affichages: 54
  • Imprimer.zip
    20.5 KB · Affichages: 56
  • Imprimer.zip
    20.5 KB · Affichages: 61
V

Vériland

Guest
De mieux en mieux…yaskifo... je pense que la question de départ est largement résolue, personnellement je ne vois pas ce qu’il y aurait à changer dans cet exemple… on sélectionne… on clique et le tour est joué… avec en prime des options très utiles pour des classeurs volumineux… Merci Gérard pour la diffusion de tes fichiers très explicites…

A+ et bon forum à tous
 

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2