Création d'un ruban spécifique de navigation VBA

Bonjour à tous,

- Introduction au fichier : Mon fichier dispose d'un certains nombre d'onglets (environ une 50aine), que je peux regrouper (par exemple 3 onglets appartiennent au groupe 1, 4 onglets au groupe 2, 2 onglets au groupe 3 et etc)

Compte tenu du nombre de feuille, ce n'est pas très agréable de naviguer dans ce fichier excel ...

Alors, je me demandais si il était possible de créer dans la barre d'outil excel un ruban spécifique à mon fichier qui me permettrai de :

- avoir une "liste déroulante" qui serait nommé "Groupe 1" et qui me permettrait d'afficher la liste de ces 3 onglets et de cliquer sur celui que je souhaite pour aller dans cette feuille.

Je peux faire des macros facilement pour naviguer entre feuille avec l'enregistrement, mais alors pour avoir mon bouton et mes liens dans la barre, je ne trouve rien que j'arrive à faire marcher ....

Si quelqu'un sait faire ça ou me donner une ou deux direction je suis plus que preneur

Merci beaucoup

Salut Stan,

dans le ruban, pas capable...

Voici une solution VBA pour laquelle tu devrais réserver un endroit fixe sur chaque feuille pour accéder à tes groupes.

Ici, c'est sur la ligne 1.

Premier jet à tester!

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim tTab, iCol%, iSheet%, sCol$, sItem$
'
With Sh
    iCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
    If Not Intersect(Target, .[A1]) Is Nothing Then
        .Cells.Validation.Delete
        Target.Validation.Add _
            Type:=xlValidateList, _
            Formula1:="Groupe 1,Groupe 2,Groupe 3"
    End If
    If Not Intersect(Target, .Range("B1:" & Chr(64 + iCol) & 1)) Is Nothing Then
        If Target <> "" Then
            sItem = .[A1]
            iSheet = Target.Value
            tTab = .Range("B1").Resize(1, iCol - 1).Value
            For Each sSh In ActiveWorkbook.Sheets
                sSh.Visible = True
            Next
            For x = 1 To Sheets.Count
                Sheets(x).Visible = IIf(x >= CInt(tTab(1, 1)) And x <= CInt(tTab(1, UBound(tTab, 2))), True, False)
            Next
            Sheets(iSheet).Activate
            Sheets(iSheet).[A1] = sItem
            Sheets(iSheet).[A1].Resize(1, .Cells(1, Columns.Count).End(xlToLeft).Column).Borders.LineStyle = xlContinuous
            Sheets(iSheet).[B2].Select
        End If
    End If
End With
'
End Sub

A+

34stan.xlsm (39.04 Ko)

bonjour,

Si le nombre de groupes est strictement limité et invariable il semble préférable de prévoir un liste par groupe :

Indiquer le nombre de groupe

Par contre si le nombre de groupe est susceptible de varier le préciser.

A+

Bonjour stan2731

Intéressante la navigation @curulis57 : simple et efficace. Je retiens !

J'ai aussi ceci en stock (mais pas de regroupement) -ce n'est pas de moi- aménageable ...

Bonjour,

Non le nombre de groupe n'est pas variable

Pour le moment le nombre de feuille est fixe (chaque feuille est affecté à un groupe et ca ne bougera pas).

Je vais regarder ca donc merci

Ah Steelson je pense que ta macro me met sur une bonne voie,

Si je créé une macro par groupe qui m'affiche la liste de feuille du groupe dans ta liste, et que j'affecte cette macro dans mon ruban ca devrait marcher,

Je vais regarder si j'arrive à modifier un peu le code pour ca

Indiquer le nombre de groupe

Ah oui pardon j'ai 13 groupes

Bonjour,

Bon finalement je me rend compte que je suis parti dans une mauvaise direction.

La programmation du ruban n'étant pas ce que je maîtrise le mieux... Je préfère passer la main.

A+

Rechercher des sujets similaires à "creation ruban specifique navigation vba"