• Initiateur de la discussion Initiateur de la discussion nicos3390
  • Date de début Date de début

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 !

N

nicos3390

Guest
Bonjour,

je suis en train de réaliser un fichier de suivi des ressources et des dépenses à titre professionnel.

j'ai réalisé plusieurs feuilles sur mon fichier excel et j'aimerais réalisé une macro qui me permette d'aller directement à la feuille que je veux sans aller la chercher parmi toutes.

voici quelques noms de mes feuilles, Alain, Alexandre, Michel, Adrien, ...

J'aimerais donc une barre de dialogue qui me demande de choisir parmi ces 4 noms de feuilles.

Est-ce clair?

Par avance merci

Nicolas
 
Re : Pratique VBA

Bonjour nicos3390 et bienvenue sur le forum

Si tu veux passer par VBA, tu peux essayer un code de ce genre :
VB:
Sub choix()
    Dim nf As String
    nf = InputBox("Quelle feuille voulez-vous afficher ?")
    If nf <> "" Then
        On Error Resume Next
        Sheets(nf).Activate
    End If
End Sub

A+
 
Re : Pratique VBA

Salut, tu peux y accéder via un clic droit sur les fleches de navigation

sinon via le menu contextuel : ici pour 5 feuilles
pour cela placer dans ThisWorkBook
Code:
Option Explicit

Private Sub Workbook_Deactivate()
    EffacerMenus
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    EffacerMenus

    '   Création d'un menu contextuel
    '   ajouté en première position
    Set MenuPrincipal = Application.CommandBars("cell").Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True)
    With MenuPrincipal
        .Caption = "Feuilles"
        .BeginGroup = True
    End With

    '   Création du premier sous-menu affecté à MenuPrincipal
    Set SousMenu1 = MenuPrincipal.Controls.Add(Type:=msoControlButton)
    With SousMenu1
       .Caption = "Feuil1"
       .OnAction = "ActF1"
       .FaceId = 2105
    End With

    Set SousMenu2 = MenuPrincipal.Controls.Add(Type:=msoControlButton)
    With SousMenu2
       .Caption = "Feuil2"
       .OnAction = "ActF2"
       .FaceId = 2105
    End With

    Set SousMenu3 = MenuPrincipal.Controls.Add(Type:=msoControlButton)
    With SousMenu3
       .Caption = "Feuil3"
       .OnAction = "ActF3"
       .FaceId = 2105
    End With

    Set SousMenu4 = MenuPrincipal.Controls.Add(Type:=msoControlButton)
    With SousMenu4
       .Caption = "Feuil4"
       .OnAction = "ActF4"
       .FaceId = 2105
    End With

    Set SousMenu5 = MenuPrincipal.Controls.Add(Type:=msoControlButton)
    With SousMenu5
       .Caption = "Feuil5"
       .OnAction = "ActF5"
       .FaceId = 2105
    End With
End Sub

Dans un module
Code:
Option Explicit

Sub ActF1()
    Feuil1.Activate
End Sub

Sub ActF2()
    Feuil2.Activate
End Sub

Sub ActF3()
    Feuil3.Activate
End Sub

Sub ActF4()
    Feuil4.Activate
End Sub

Sub ActF5()
    Feuil5.Activate
End Sub

Dans un autre module
Code:
Option Explicit

Public MenuPrincipal As CommandBarPopup
'   Sous-menus de MenuPrincipal
Public SousMenu1 As CommandBarControl
Public SousMenu2 As CommandBarControl
Public SousMenu3 As CommandBarControl
Public SousMenu4 As CommandBarControl
Public SousMenu5 As CommandBarControl

Sub EffacerMenus()
Dim Ctrl As CommandBarControl
    For Each Ctrl In Application.CommandBars("Cell").Controls
        If Ctrl.Caption = "Feuilles" Then Ctrl.Delete
    Next Ctrl
End Sub
 

Pièces jointes

  • IMG757.jpg
    IMG757.jpg
    32.8 KB · Affichages: 76
  • IMG758.jpg
    IMG758.jpg
    49.6 KB · Affichages: 179
Dernière édition:
Re : Pratique VBA

Bonjour à tous

une petite macro à lancer sur un raccourci clavier sur la première lettre (on peut adapter à n lettres si doublon sur la première lettre ou au nombre de lettres qui sont tapées):

Code:
Public nomf(100), i
Sub lance()
For i = 1 To Sheets.Count
nomf(i) = Sheets(i).Name
Next
End Sub
Sub Trouve()
lance
Dim NAT As String
NAT = InputBox("Première lettre du début du nom")
For n = 1 To i
'MsgBox nomf(n)
If Left(nomf(n), 1) = NAT Then Sheets(n).Select
Next
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
26
Affichages
2 K
P
  • Question Question
Réponses
1
Affichages
851
Réponses
2
Affichages
1 K
N
Réponses
7
Affichages
2 K
niconoip
N
J
Réponses
0
Affichages
1 K
J
M
Réponses
13
Affichages
1 K
Morgane60
M
P
Réponses
3
Affichages
2 K
pygargue
P
Réponses
22
Affichages
5 K
N
  • Question Question
Réponses
5
Affichages
3 K
M
Réponses
22
Affichages
3 K
maxousurf
M
Retour