[ Résolu ] Masquer des colonnes avec des cases à cocher.

  • Initiateur de la discussion Initiateur de la discussion Loic.G
  • Date de début Date de début

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 !

Loic.G

XLDnaute Nouveau
Bonjour,

Cela fait un petit moment maintenant que je cherche à masquer des colonnes avec des cases à cocher, selon le texte qu'il y sur une ligne.
Plutôt que de faire de long discours je vous met en pièce jointe mon fichier.
Actuellement j'ai trouvé un code qui sur le principe fais ce que je veux, mais qui ne fonctionne que pour 1 colonne (et qui ne recherche pas sur une ligne en particulier).

Pour information, je suis totalement novice dans les macro / vba, tous ce que j'utilise ce sont des codes trouvés sur le net que j'essaie d'adapter à mes besoins 🙂

Merci à tous.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Masquer des colonnes avec des cases à cocher.

Salut,

Petite adaptation de ton code :
Code vba:
Sub Test()
Dim Sh As Shape, Col As Integer
For Each Sh In ActiveSheet.Shapes
If Left(Sh.Name, 9) = "Check Box" Then
For Each r In Range("1:1")
If Sh.OLEFormat.Object.Caption = r Then
If Sh.OLEFormat.Object.Value = 1 Then
r.Columns.Hidden = True
Else
r.Columns.Hidden = False
End If
End If
Next r
End If
Next Sh
End Sub






Ton code :
Code vba:
Col = Application.Match(Sh.OLEFormat.Object.Caption, [1:1], 0)



correspond à la fonction equiv, qui ne renvoie qu'une seule valeur, voilà pourquoi tu ne pouvais masquer qu'une seule colonne,
++
 

Pièces jointes

Re : Masquer des colonnes avec des cases à cocher.

Merci de ta réponse si rapide !
Cela fonctionne parfaitement. J'ai juste inverser l'affichage / masquage et limité les cases à vérifier car c’était un peu lent.


Pour info :

Sub Test()
Dim Sh As Shape, Col As Integer
For Each Sh In ActiveSheet.Shapes
If Left(Sh.Name, 9) = "Check Box" Then
For Each r In Range("A1:Z1")
If Sh.OLEFormat.Object.Caption = r Then
If Sh.OLEFormat.Object.Value = 1 Then
r.Columns.Hidden = False
Else
r.Columns.Hidden = True
End If
End If
Next r
End If
Next Sh
End Sub


Encore un grand merci à toi 🙂
 
Re : [ Résolu ] Masquer des colonnes avec des cases à cocher.

Bonjour,

Une autre proposition que je trouve plus rapide...
Code:
Sub Test()
Dim Sh As Shape, Col As Integer
Dim X As Integer
Dim DerCol As Integer
  DerCol = Cells(1, Columns.Count).End(xlToLeft).Column
  For Each Sh In ActiveSheet.Shapes
    If Left(Sh.Name, 9) = "Check Box" Then
      For X = 0 To DerCol
        Col = Application.Match(Sh.OLEFormat.Object.Caption, [1:1], X)
        If Sh.OLEFormat.Object.Value = 1 Then
          Columns(Col).Hidden = False
        Else
          Columns(Col).Hidden = True
        End If
      Next X
    End If
  Next Sh
End Sub


Jecherche
 
Re : [ Résolu ] Masquer des colonnes avec des cases à cocher.

Bonjour Jecherche,

Effectivement c'est plus rapide, mais cela ne marche pas pour moi.
Dans mon exemple les colonnes à masquer son cote à cote mais en réalité, elles sont éparpillé et du coup j'ai le même problème qu'à l'origine, seul la 1ere colonne se masque.

Merci quand même.
 
- 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
10
Affichages
267
Réponses
18
Affichages
1 K
Réponses
2
Affichages
562
Retour