Liste déroulante onglets Excel

 Créer une liste déroulante dynamique des onglets dans Excel avec mise à jour automatique



🎯 Dans ce tutoriel, je vous explique comment créer une liste déroulante des onglets dans Excel avec une mise à jour automatique.


✅ Ainsi, au lieu de chercher manuellement un onglet spécifique, il vous suffit de sélectionner l'onglet souhaité dans la liste déroulante, ce qui réduit le temps passé à naviguer dans votre classeur Excel.


👍 De plus, cette liste déroulante sera présente sur tous vos onglets, ce qui rend vos classeurs interactifs et efficaces.


➡️ Mais ce n'est pas tout, lorsque vous ajoutez ou supprimez un onglet, la liste déroulante se met à jour automatiquement.



Voir la vidéo pour suivre les différentes étapes :



Créer une Liste Déroulante Dynamique des Onglets dans Excel avec Mise à Jour Automatique




Pour vous entraîner :

Télécharger le Fichier Excel utilisé dans la vidéo
👇
Après avoir ouvert le lien,
  • vous cliquez sur "Fichier",
  • puis sur "Enregistrer sous", ou sur "Créer une copie"
  • et sur "Télécharger une copie".




📌↪️→ Code VBA à utiliser pour créer une liste déroulante dynamique des onglets dans Excel 


1ère macro à insérer sur une feuille de module :

Sub ListesDéroulantesSurOnglets()
    Dim ws As Worksheet
    Dim cell As Range
    Dim dropdownRange As String
    Dim sheetNames As String
    Dim sheet As Worksheet

    ' Définir la plage de cellules pour la liste déroulante
    dropdownRange = "A1" ' Changez cette valeur pour la cellule souhaitée

    ' Lire les noms des onglets
    sheetNames = ""
    For Each sheet In ThisWorkbook.Worksheets
        sheetNames = sheetNames & sheet.Name & ","
    Next sheet

    ' Retirer la dernière virgule
    sheetNames = Left(sheetNames, Len(sheetNames) - 1)

    ' Ajouter la liste déroulante à chaque onglet
    For Each ws In ThisWorkbook.Worksheets
        Set cell = ws.Range(dropdownRange)
        With cell.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:=sheetNames
            .IgnoreBlank = True
            .InCellDropdown = True
            .ShowInput = True
            .ShowError = True
        End With
        
        ' Formater la cellule
        cell.RowHeight = 35
        cell.ColumnWidth = 12
        cell.Font.Bold = True
        cell.Font.Color = RGB(255, 255, 255)
        cell.HorizontalAlignment = xlCenter
        cell.VerticalAlignment = xlCenter
        cell.WrapText = True
        cell.Interior.Color = RGB(126, 53, 14) ' Couleur de remplissage #7E350E
    Next ws
End Sub




2ème macro à insérer dans "Thisworkbook" :

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim newSheetName As String

    ' Demander le nom du nouvel onglet
    newSheetName = InputBox("Entrez le nom du nouvel onglet :")
    If newSheetName <> "" Then
        Sh.Name = newSheetName
    End If

    ' Appeler la macro pour mettre à jour la liste déroulante
    Call ListesDéroulantesSurOnglets
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim ws As Worksheet
    Dim dropdownRange As String

    ' Définir la plage de cellules pour la liste déroulante
    dropdownRange = "A1" ' Changez cette valeur pour la cellule souhaitée

    ' Vérifier si la cellule modifiée est celle de la liste déroulante
    If Not Intersect(Target, Sh.Range(dropdownRange)) Is Nothing Then
        ' Parcourir les onglets pour trouver celui correspondant à la valeur sélectionnée
        For Each ws In ThisWorkbook.Worksheets
            If ws.Name = Target.Value Then
                Application.EnableEvents = False
                ws.Activate
                ws.Range(dropdownRange).Value = ws.Name ' Mettre à jour la cellule A1 avec le nom de l'onglet
                Application.EnableEvents = True
                Exit For
            End If
        Next ws
    End If
End Sub

Private Sub Workbook_SheetRename(ByVal Sh As Object, ByVal OldName As String, ByVal NewName As String)
    ' Appeler la macro pour mettre à jour la liste déroulante
    Call ListesDéroulantesSurOnglets
End Sub

Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
    ' Appeler la macro pour mettre à jour la liste déroulante
    Call ListesDéroulantesSurOnglets
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim dropdownRange As String
    dropdownRange = "A1" ' Changez cette valeur pour la cellule souhaitée

    ' Mettre à jour la cellule de la liste déroulante avec le nom de l'onglet actif
    Application.EnableEvents = False
    Sh.Range(dropdownRange).Value = Sh.Name
    Application.EnableEvents = True

    ' Appeler la macro pour mettre à jour la liste déroulante
    Call ListesDéroulantesSurOnglets
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Address = "$A$1" Then
            Application.EnableEvents = False
            Call ListesDéroulantesSurOnglets
            Application.EnableEvents = True
        End If
    End If
End Sub








Posts les plus consultés de ce blog

Suivi des stocks et inventaire avec alerte

Cases à cocher interactives sur Excel

DIAGRAMME DE GANTT SUR EXCEL