XL 2016 Position d'un onglet au début da ma barre onglets

Claudy

XLDnaute Accro
Bonjour,
un classeur avec plus de 40 onglets...de mai17 à décembre21!
Via un lien, je vais directement vers n'importe quel onglet( Merci Stapple)
Je reviens vers mon onglet du mois actuel via cette macro:
VB:
Sub Aller_Vers_Mois_cejour()
Sheets((Format(Date, "mmmmyy"))).Select
Range("G150").End(xlUp)(2).Select

End Sub

Seulement mon onglet sélectionné ainsi se situe n'importe où:
1614344010921.png

ici en 4° position. Mais il pourrait se trouver en 15° position.
Comment faire pour qu'il se retrouve en 1° position comme ci dessous:
1614344084528.png

Juste après les flèches < >

Histoire de ne plus cliquer sur les flèches pour défiler.

Merci d'avance,

Claudy
 
Solution
Bonjour à tous :),

Une macro qui devrait faire ce que tu souhaites @Claudy ;). Pour la lancer, taper la combinaison de touches Ctrl+Maj+o.

La macro :
  • ne change pas l'ordre des feuilles
  • on saisit le mois et l'année en chiffre séparés par un caractère qui n'est pas un chiffre (on peut donc tout faire avec le pavé numérique et l’orthographe de la saisie importe peu)
  • Il ne se passe rien si la saisie ne correspond à aucune feuille

nota : bien évidemment, quand on veut sélectionner un onglet situé vers la fin à droite, il se peut que l'onglet ne soit pas positionné en 1ère position à gauche puisqu' Excel est capable d'afficher de manière visible l'onglet désiré et tous les onglets à...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Claudy,
A la fin toutes les feuilles seront mélangées.
Pourquoi ne pas toutes les masquer sauf celle qui vous intéresse :
VB:
Sub Aller_Vers_Mois_cejour()
Dim Nom$: Nom = Format(Date, "mmmmyy")
Sheets(Nom).Visible = True
Sheets(Nom).Select
Range("G150").End(xlUp)(2).Select
For Each Feuille In Worksheets
    If Feuille.Name <> Nom Then
        Feuille.Visible = False
    End If
Next Feuille
End Sub
Les autres feuilles sont toujours accessibles par Onglets/Afficher.
 

Claudy

XLDnaute Accro
Bin justement, je veux garder janvier février mars avril dans l'ordre chronologique,
mais dans mon cas janvier est en dessous des flèches, février et les autres affichés
1614348202279.png

Février est le premier visible après les flèches.
Janvier n'est pas caché
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Les lignes pour décaler les onglets sont :
Code:
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst ' Premier onglet en 1ere position'
ActiveWindow.ScrollWorkbookTabs Sheets:=1         ' Décalage à gauche'
ActiveWindow.ScrollWorkbookTabs Sheets:=-1        ' Décalage à droite'
Par contre je ne sais pas comment géré cela pour que la feuille désirée soit en première position visible.:)
Il y aura surement un esprit plus avisé qui va passer par là.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

=>Claudy
J'ai pas eu de retour de ta part sur ma proposition dans ce fil que tu as initié mardi.
 

patricktoulon

XLDnaute Barbatruc
bonsoir
tu a interet a ce que les mois en toute lettre ou même en abrégé soit bien orthographiés
VB:
Sub test2()
    ReDim t2(1 To Sheets.Count)
     For Each f In Worksheets
        i = i + 1
        fn = f.Name
        t2(i) = CLng(DateValue("1/" & Left(fn, Len(fn) - 2) & "/" & Right(fn, 2)))
    Next
    For i = Sheets.Count To 1 Step -1
        MsgBox Format(CDate(WorksheetFunction.Large(t2, i)), "mmmmyy")
    Next
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Une macro qui devrait faire ce que tu souhaites @Claudy ;). Pour la lancer, taper la combinaison de touches Ctrl+Maj+o.

La macro :
  • ne change pas l'ordre des feuilles
  • on saisit le mois et l'année en chiffre séparés par un caractère qui n'est pas un chiffre (on peut donc tout faire avec le pavé numérique et l’orthographe de la saisie importe peu)
  • Il ne se passe rien si la saisie ne correspond à aucune feuille

nota : bien évidemment, quand on veut sélectionner un onglet situé vers la fin à droite, il se peut que l'onglet ne soit pas positionné en 1ère position à gauche puisqu' Excel est capable d'afficher de manière visible l'onglet désiré et tous les onglets à sa droite.

Le code:
VB:
Sub OngletEnPos1()
Dim MoisAn$, mois$, an$, c$, deb&, onglet$, Lindex&

   MoisAn = Trim(InputBox("Indiquez le mois et l'année en chiffres séparés par ""non chiffre"" ?:" _
      & vbLf & vbLf & "Exemple: 8 20 ou 08 2020 ou 8.20 pou 8,20 ou 8/20 pour août 2020", vbQuestion))

   For deb = 1 To Len(MoisAn)    'extraction du mois
      c = Mid(MoisAn, deb, 1)
      If c >= "0" And c <= "9" Then mois = mois & c Else Exit For
   Next deb

   For deb = Len(MoisAn) To 1 Step -1     'extraction année
      c = Mid(MoisAn, deb, 1)
      If c >= "0" And c <= "9" Then an = c & an Else Exit For
   Next deb

   onglet = Format("28" & "/" & mois & "/" & an, "mmmyy") 'nom de l'onget sous la forme MMMAA
   On Error Resume Next: Lindex = Sheets(onglet).Index: On Error GoTo 0    'index de l'onglet
   'si index inexistant donc onglet inexistant, on ne fait rien
   If Lindex = 0 Then MsgBox "La feuille '" & MoisAn & "' est inexistante!", vbCritical: Exit Sub

   Application.ScreenUpdating = False
   ActiveWindow.ScrollWorkbookTabs -Sheets.Count      'on affiche la 1ère feuille tout à droite
   ActiveWindow.ScrollWorkbookTabs Lindex             'on déplace les onglets vers la droite de ce qu'il faut
   Application.Goto Sheets(Lindex).Range("a1"), True  'on sélectionne A1 de la feuille désirée
End Sub

edit: v1a
 

Pièces jointes

  • Claudy- Onglet courant en-tete- v1a.xlsm
    75.3 KB · Affichages: 13
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin