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

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

  • Masquer colonnes.xlsm
    18.2 KB · Affichages: 25
Dernière modification par un modérateur:

Hieu

XLDnaute Impliqué
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

  • Masquer colonnes_v0.xlsm
    18.2 KB · Affichages: 32

Loic.G

XLDnaute Nouveau
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 :)
 

jecherche

XLDnaute Occasionnel
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
 

Loic.G

XLDnaute Nouveau
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.
 

Discussions similaires

Réponses
2
Affichages
157

Statistiques des forums

Discussions
312 195
Messages
2 086 072
Membres
103 110
dernier inscrit
Privé