Masquer colonnes via combobox

Bonjour tout le monde,

Je suis étudiant et nouveau sur ce forum. Dans le cadre de mon stage en entreprise, j'ai réalisé une base de données et je souhaiterais créer une interface afin que celle-ci soit facilement utilisable. La base de données comporte plusieurs groupes de colonnes lié à des paramètres. Afin de comparer 2 paramètres entre eux parmi tous ceux présent dans la base de données, je souhaiterais créer 2 combo-box avec une liste déroulante qui permettront de choisir ces deux paramètres. Ces 2 combo-box doivent me permettre de masquer les colonnes que je n'ai pas choisi. J'ai réussi à le faire sur une première combo-box mais pas sur la deuxième. Je ne sais pas comment lié la combo-box 2 à la combo-box 1.

J'ai le code suivant pour la combo-box 1.

Private Sub ComboBox1_Change()
Dim Colonne As Integer
    Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    If ComboBox1.Value <> "Tous" Then
        For Colonne = 6 To Cells(1, Columns.Count).End(xlToLeft).Column Step 3
            If Cells(1, Colonne).Value <> ComboBox1.Value Then Cells(1, Colonne).Resize(, 3).EntireColumn.Hidden = True
        Next Colonne
    End If
End Sub

Par souci de confidentialité des données, j'ai créer un fichier simpliste résumant mon problème.

45exemple.xlsm (27.58 Ko)

Bonjour et bienvenu(e)

A tester

Bonjour,

un autre essai.

Cordialement.

89exemple.xlsm (32.31 Ko)

Bonsoir et merci pour vos réponse.

Banzai64:

Après réadaptation du code proposé, cela fonctionne parfaitement!

Voici le code pour ceux que cela intéresseraient:

Private Sub ComboBox1_Change()
Dim Colonne As Integer

  Application.ScreenUpdating = False
  Cells.EntireColumn.Hidden = False
  If ComboBox1.Value <> "Tous" Then
    For Colonne = 6 To Cells(1, Columns.Count).End(xlToLeft).Column Step 3
      If Cells(1, Colonne).Value <> ComboBox1.Value Then Cells(1, Colonne).Resize(, 3).EntireColumn.Hidden = True
    Next Colonne
  End If
End Sub

Private Sub ComboBox2_Change()
Dim Colonne As Integer

  Application.ScreenUpdating = False
  Cells.EntireColumn.Hidden = False
  If ComboBox2.Value <> "Tous" And Me.ComboBox1.Value <> "Tous" Then
    For Colonne = 6 To Cells(1, Columns.Count).End(xlToLeft).Column Step 3
      If Cells(1, Colonne).Value <> ComboBox1.Value And Cells(1, Colonne).Value <> ComboBox2.Value Then Cells(1, Colonne).Resize(, 3).EntireColumn.Hidden = True
    Next Colonne
  End If
End Sub

Je ne connaissait pas ce mot clé "me" qui s'est finalement avéré très utile.

biddaddy154:

Le code proposé est tout aussi intéressant, plus simple de conception et qui amène le même résultat!

Encore merci.

Bonne soirée.

Rechercher des sujets similaires à "masquer colonnes via combobox"