Masquer des colonnes

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Dans une feuille, je souhaite trier dans la colonne F (masquée) les cellules qui contiennent un "x". Parallèlement, je veux masquer les colonnes C et D. J'ai réalisé une petite macro à partir de l'enregistreur, le problème c'est que quand je lance ma macro, tout se masque ou presque.
Est-ce du au fait de la présence de la cellule commentaire (fusionnée)? Le problème c'est que je ne peux pas supprimer ou défusionner cette cellule. Le fichier joint n'est pas mon fichier d'origine, je l'ai réalisé pour mieux expliciter mon propos.

Si vous pouvez m'aider, je suis preneur (comme vous vous en doutez, mon niveau en matière de programmation n'est pas très élevé)

Bien cordialement,

Pierre Constantin
 

Pièces jointes

  • Essai_Masque.xlsm
    19.5 KB · Affichages: 3

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour JM,
Ta macro fonctionne, comme d'habitude, très bien.
J'ai donc essayé de la transposer dans mon fichier de travail (2019_04_05_GRILLE_RAPPORT_CompilationEssai.xlsm (feuille 6-Conclusion initiale).
Cette feuille étant protégée (sans mot de passe) j'ai rajouté l'instruction unprotect pour pouvoir autoriser la macro à fonctionner.
Je ne sais pas comment je m'y suis pris, mais ça buggue à ActiveSheet.range (la méthode range a échoué...) dans la macro Masquer1.
C'est dur d'être si nul ! Mais là, je ne comprends pas ce qui bloque. Si tu as une idée ?

Bien cordialement,

Pierre
 

Pièces jointes

  • 2019_04_05_GRILLE-RAPPORT_CompilationEssai.xlsm
    413 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Constantin, JM,
VB:
Sub Masquer1()
ActiveSheet.Protect UserInterfaceOnly:=True, AllowFiltering:=True
ActiveSheet.AutoFilterMode = False
Range("F1:F184").AutoFilter 1, "<>"
Range("C:D,F:F").EntireColumn.Hidden = True
End Sub

Sub Afficher1()
ActiveSheet.Protect UserInterfaceOnly:=True
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
End Sub
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour Constantin, JM,
VB:
Sub Masquer1()
ActiveSheet.Protect UserInterfaceOnly:=True, AllowFiltering:=True
ActiveSheet.AutoFilterMode = False
Range("F1:F184").AutoFilter 1, "<>"
Range("C:D,F:F").EntireColumn.Hidden = True
End Sub

Sub Afficher1()
ActiveSheet.Protect UserInterfaceOnly:=True
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
End Sub
Merci de votre réponse Job75,

C'est absolument parfait (comme d'habitude) !

Bonne journée !

Pierre Constantin
 

Discussions similaires