Couleur onglet après sélection dans combobox

Bonjour,

Voici mon code

Private Sub UserForm_Initialize()
 Call ComboBox1_Initialize
End Sub

Private Sub ComboBox1_Change()
  ThisWorkbook.Worksheets(ComboBox1.Value).Activate
End Sub

Private Sub ComboBox1_Initialize()
Dim wsh As Worksheet
  ComboBox1.Clear
  For Each wsh In ThisWorkbook.Worksheets
    ComboBox1.AddItem wsh.Name
  Next wsh
End Sub

Je cherche le moyen de :

- mettre en rouge l'onglet correspondant à ma sélection dans le combobox

- revenir à la "couleur d'origine" lorsque cet onglet n'est plus sélectionné.

Autre petit problème, j'ai dans mon classeur 370 feuilles et, de ce fait, il est lent à l'ouverture.

Pour info, aucune macro ne s'ouvre automatiquement ..... sauf peut-être, à mon avis le rafraîchissement du combobox.

Des idées ?

Merci.

Bonne journée.

Bonjour olivierporcinet,

Un « simple » enregistrement de macro te donnera une piste pour aller plus loin :

Sub ChangeTabColor()
'
' ChangeTabColor Macro
'

'
    Sheets("Données").Select
    With ActiveWorkbook.Sheets("Données").Tab
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0
    End With
End Sub

Connais-tu cette astuce :

image

Avoir 370 onglets dans un fichier Excel n’est pas une utilisation normale. Il y a certainement des optimisations à faire dans ton fichier pour réduire ce nombre à quelque chose d’humainement gérable.

Merci pour la réponse.

En fait, j'ai une feuille par jour calendrier.

Donc, je dois trouver une macro qui permette d'agir sur toutes les feuilles sans devoir réécrire les codes 370 fois...

je connais l'astuce, merci mais je ne serai pas le seul à utiliser le classeur et c'est + facile via un combobox

est-il possible de mettre ces codes quelque part ?

Application.ScreenUpdating = False
Application.ScreenUpdating = True

Oui, bien sûr que c’est possible ! Mais sans aucun exemple de fichier ni de macro, difficile de te dire où !

N’y a-t-il pas moyen de filtrer l’affichage dans un onglet unique en fonction du jour choisi plutôt ?

Oups, pardon, j’avais oublié ta 1re publication :

Private Sub UserForm_Initialize()
 Call ComboBox1_Initialize
End Sub

Private Sub ComboBox1_Change()
  ThisWorkbook.Worksheets(ComboBox1.Value).Activate
End Sub

Private Sub ComboBox1_Initialize()
Dim wsh As Worksheet
  ComboBox1.Clear
  Application.ScreenUpdating = False
  For Each wsh In ThisWorkbook.Worksheets
    ComboBox1.AddItem wsh.Name
  Next wsh
  Application.ScreenUpdating = True
End Sub

Tu pourrais même pousser le bouchon un peu plus loin :

Private Sub UserForm_Initialize()
 Call ComboBox1_Initialize
End Sub

Private Sub ComboBox1_Change()
  ThisWorkbook.Worksheets(ComboBox1.Value).Activate
End Sub

Private Sub ComboBox1_Initialize()
Dim wsh As Worksheet
  ComboBox1.Clear
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  Application.EnableEvents = False
  For Each wsh In ThisWorkbook.Worksheets
    ComboBox1.AddItem wsh.Name
  Next wsh
  Application.EnableEvents = True
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub

merci, cela change un peu.

c'est mieux, reste plus qu'à trouver une solution pour les onglets.

Merci.

Problème résolu

Pour ceux qui voudraient résoudre un problème similaire au tien, tu pourrais peut-être partager ta solution ?

Private Sub UserForm_Initialize()
    ' Appel à l'initialisation du ComboBox
    Call ComboBox1_Initialize

    ' Réinitialisation des couleurs de tous les onglets
    Dim wsh As Worksheet
    For Each wsh In ThisWorkbook.Worksheets
        wsh.Tab.ColorIndex = xlColorIndexNone ' Enlever toute couleur personnalisée
    Next wsh
End Sub

Private Sub ComboBox1_Change()
    Static lastSheet As Worksheet ' Conserver l'onglet précédent

    ' Réinitialiser la couleur de l'onglet précédent
    If Not lastSheet Is Nothing Then
        lastSheet.Tab.ColorIndex = xlColorIndexNone
    End If

    ' Activer et mettre en rouge l'onglet sélectionné
    Dim currentSheet As Worksheet
    Set currentSheet = ThisWorkbook.Worksheets(ComboBox1.Value)
    currentSheet.Activate
    currentSheet.Tab.Color = RGB(255, 0, 0) ' Couleur rouge

    ' Mémoriser l'onglet actuel comme dernier onglet
    Set lastSheet = currentSheet
End Sub

Private Sub ComboBox1_Initialize()
    Dim wsh As Worksheet
    ComboBox1.Clear

    ' Désactiver le rafraîchissement pour accélérer le chargement
    Application.ScreenUpdating = False

    ' Ajouter chaque feuille au ComboBox
    For Each wsh In ThisWorkbook.Worksheets
        ComboBox1.AddItem wsh.Name
    Next wsh

    ' Réactiver le rafraîchissement
    Application.ScreenUpdating = True
End Sub
Rechercher des sujets similaires à "couleur onglet selection combobox"