Je sollicite votre aide car j'aimerais créer une liste déroulante avec tout les noms des onglets de mon classeurs qui se mettrais automatiquement à jour lors de la création d'autres onglets. L'objectif de cette liste déroulante, c'est de me permettre de sélectionner l'onglet dans lequel je souhaite coller mes données.
Il faut savoir que j'ai une partie du code final. C'est à dire que je peux actuellement copier et coller mes valeurs dans un onglets mais lors de la création d'autre onglet, je ne peux pas opérer la même manipulation à moins de créer spécialement des boutons pour ces nouvelles feuilles.
Je sais pas si j'ai été assez clair.
Bonjour,
ce code t'établira la liste de tes onglets en colonne A1:A exploitable par le gestionaire de noms de manière dynamique avec nbval(a:a)
VB:
Sub listonglets()
Dim i As Integer
Range("A1").Select
For i = 1 To Sheets.Count
ActiveCell.Value = Sheets(i).Name
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Je te remercie pour ta réponse. Mais il se trouve que j'étais tombée sur cette réponses. Mais le problème qui se pose dans mon cas c'est que je n'arrive pas a faire exécuter ces lignes de code. C'est probablement dû au "Private Sub" car je n'arrive pas à le voir dans la "rubrique" macro.
Bonjour,
ce code t'établira la liste de tes onglets en colonne A1:A exploitable par le gestionaire de noms de manière dynamique avec nbval(a:a)
VB:
Sub listonglets()
Dim i As Integer
Range("A1").Select
For i = 1 To Sheets.Count
ActiveCell.Value = Sheets(i).Name
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Je te remercie pour ta réponse @st007,
Mais je voudrais savoir si c'est possible de mettre cette liste sous forme de liste déroulante et non sous la forme d'une simple liste ?
@AnjyD : Tu aurai dû travailler sur l'exemple du lien de Phil69970 et joindre un fichier.
Comme tu ne l'as pas fait, on ne peut pas te proposer de solution répondant parfaitement à tes attentes.
Généralement, je n'aide pas ceux ou celles qui ne font pas l'effort de joindre un fichier. J'ai pris le fichier de JB (repose en paix) et complété le code.
Bah! sans effort on arrive à rien dans la vie.
Bonne journée.
ps: Liste de validation sur toutes les feuilles même cellule (à adapter à ta convenance).
Un solution voisine de celle de cp4 mais avec la feuille auxiliaire "Liste" (à masquer).
Le code dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim liste(), s As Object, n%
ReDim liste(1 To Sheets.Count - 1, 1 To 1)
For Each s In Sheets
If s.Name <> "Liste" And s.Name <> Sh.Name Then
n = n + 1
liste(n, 1) = s.Name
End If
Next
With Sheets("Liste") 'feuille auxiliaire
.Cells(1).Resize(n) = liste
.Cells(1).Resize(n).Name = "Liste" 'nomme la plage
End With
End Sub
Les listes de validation ont été créées une fois pour toutes dans les feuilles (ici en A1).
Bonjour le forum
Bonjour AnjyD, Philippe, st007, cp4 & job75
Voilà une procédure (3 lignes...) reprise par notre regretté ami Ti (qu'il a lui même reprise de Ron de Bruin). Elle ne crée pas de liste mais elle montre un menu qui te permet de sélectionner la feuille que tu veux. Copie-la dans un module et affecte-lui un bouton, ou un raccourci clavier (dans le fichier joint : Ctrl+Shift+M --- Cela te permet d'appeler le menu où que tu te trouves (dans le fichier cela va sans dire )et voilà.
VB:
Sub Menu()
Application.CommandBars("Workbook tabs").ShowPopup 500, 200
End Sub
Merci une nouvelles fois pour vos réponses, c'est vraiment gentil de m'aider.
Mais si je n'ai pas pris la peine de mettre en pièce jointes c'est parce qu'il s'agit d'un document appartenant à mon entreprise soit confidentiel.
Mais j'ai trouvé un moyen de vous le montrer, en veillant à supprimer les pages confidentiels.
J'ai appliquée les conseilles que vous m'avez données et celles-ci ne fonctionnent pas.
Bonjour le forum
Bonjour AnjyD, Philippe, st007, cp4 & job75
Voilà une procédure (3 lignes...) reprise par notre regretté ami Ti (qu'il a lui même reprise de Ron de Bruin). Elle ne crée pas de liste mais elle montre un menu qui te permet de sélectionner la feuille que tu veux. Copie-la dans un module et affecte-lui un bouton, ou un raccourci clavier (dans le fichier joint : Ctrl+Shift+M --- Cela te permet d'appeler le menu où que tu te trouves (dans le fichier cela va sans dire )et voilà.
VB:
Sub Menu()
Application.CommandBars("Workbook tabs").ShowPopup 500, 200
End Sub
C'est super ton truc. Comment as-tu fait pour le raccourci avec shift. Sur mon excel 2010, je n'ai que Ctrl + lettre alors que le tien est: Ctrl+Shift+M.
Merci.
ps: est-ce que le Shift sert juste au m majuscule?
Personnellement, je fais cela sans formule, sans macro VBA : Simplement par un clique-droit.
Copier, clique-droit, sélection de l'onglet, coller fonctionne très bien et la liste est toujours à jour (ça sert à quoi que Mr. Krosoft se décarcasse ? ).
Bonjour le fil @mapomme : c'est ce que je dis souvent lorsque la question est posée mais nous sommes dans une période électorale où tout le monde réclame sa "macron"... Oupssss... @cp4 : J'ai simplement appuyé sur la touche Maj lorsque j'ai voulu intégré le "m" dans l'option de la macro (cela ne sert pas trop avec le "M" ou le "m" ????