Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres (RESOLU) afficher et masquer des colonnes via combobox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour,
A tester avec une macro établie au plus simple pour comprendre la manoeuvre
Re
Je souhaite ajouter a ton code ,un code de contrôle. Par exemple si je sélectionne dans combobox "masquer Cahier 1" et ces colonnes sont déjà masqué alors informer l'utilisateur par message que elles sont déjà masquées et vis versa ?
MERCI
 
Dernière édition:
Bonjour chaelie2015, M12, fanch55,

En modifiant la liste source comme le fait fanch55, une solution plus simple dans ce fichier :
VB:
Private Sub ComboBox1_Change()
Static flag As Boolean
If flag Then Exit Sub
Dim i%, col%, col3%, P As Range, cb$, test As Boolean
i = ComboBox1.ListIndex
If i = -1 Then Exit Sub
flag = True
If i < 3 Then col = Application.Match("Cahier " & i + 1, Rows(1), 0) Else col = Application.Match("Cahier 1", Rows(1), 0)
col3 = Application.Match("Cahier 3", Rows(1), 0)
Set P = IIf(i < 3, Cells(1, col).MergeArea, Range(Cells(1, col), Cells(1, col3).MergeArea))
cb = ComboBox1
With [Cahiers]
    With .Cells(i + 1)
        test = .Value Like "Masquer*"
        .Replace IIf(test, "Masquer", "Afficher"), IIf(test, "Afficher", "Masquer"), xlPart 'modifie la liste source
    End With
    If cb = "Masquer tous" Then .Replace "Masquer", "Afficher" Else If cb = "Afficher tous" Then .Replace "Afficher", "Masquer"
    If Application.CountIf(.Cells, "Afficher Cahier*") = 3 Then .Cells(4) = "Afficher tous"
    If Application.CountIf(.Cells, "Masquer Cahier*") = 3 Then .Cells(4) = "Masquer tous"
End With
ComboBox1 = cb 'restitue la valeur choisie
P.EntireColumn.Hidden = test 'masque/affiche
flag = False
End Sub
A+
 

Pièces jointes

Dernière édition:
Dans ce fichier (2) j'ai remplacé :
VB:
    If Application.CountIf(.Cells, "Afficher Cahier*") = 3 Then .Cells(4) = "Afficher tous"
    If Application.CountIf(.Cells, "Masquer Cahier*") = 3 Then .Cells(4) = "Masquer tous"
par :
VB:
    If cb Like "Masquer*" Then .Cells(4) = "Afficher tous"
    If cb Like "Afficher*" Then .Cells(4) = "Masquer tous"
C'est plus simple en fait.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
201
Réponses
40
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…