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 à...

Claudy

XLDnaute Accro
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
Super merci, j'ai adapté ton code et retenu que:
VB:
On Error Resume Next: Lindex = Sheets((Format(Date, "mmmmyy"))).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("G150").End(xlUp)(2), True  'on sélectionne de la feuille désirée

Autre chose je n'ai pas reçu sur mon mail vos réponses!

Claudy
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2