VBA : afficher/Masquer des colonnes avec un bouton icone

Bonjour à tous.

Je souhaite un icône ou j'affecte une Macro qui permet d'afficher ou de masquer des colonnes (Ayant pour fonction de délivrer des données "Facultative" dans une longue base de données)

J'ai premièrement Utilisé la propriété Hidden comme suit, mais cela ne marche pas. En Effet le code ne marche que dans un sens, alors qu'au deuxième clic sur l'icône, les colonnes devraient passer de masquer à afficher et "vis versa".

Avez-vous une solution âmes charitable ? Pouvez-vous m'expliquer la solution à ce problème existentiel ?

PS : Je ne parviens pas à vous envoyer le fichier test

Sub Test_MasquerAfficher

If Worksheets("Registre").Columns("A:D").Hidden = True Then _
Worksheets("Registre").Columns("A:D").Hidden = False

If Worksheets("Registre").Columns("A:D").Hidden = False Then _
Worksheets("Registre").Columns("A:D").Hidden = True

End Sub

Bonjour,

Pouvez-vous essayer ce code ?

Sub Test_MasquerAfficher()
with Worksheets("Registre").Columns("A:D")
    .hidden = not .hidden
end with
End Sub

Cdlt,

Bonjour,

La base du code est bonne, c'est juste que vos instructions sont exécutées l'une à la suite de l'autre, et que la seconde annule la première. Une version simplifiée :

Sub Afficher_masquer()

With Worksheets("Registre").Columns("A:D")
    .Hidden = Not .Hidden
End With

End Sub

Edit : salut 3GB, même idée mais en beaucoup plus lent !!

Tout d'abord, merci pour ta réactivité. Je viens de faire un essai, et à priori ça marche. Cœur sur toi

En revanche peux tu m'expliquer ce code ?

With Objet permet d'éviter de répéter plusieurs fois l'objet concerné par une instruction. Dans ce cas, tout ce qui commence par un . s'y rattache.

Ensuite tester If Machin = True Then ou If Machin = False Then renvoie True ou False selon si l'égalité est vraie ou non. Ce n'est donc pas très optimisé, dans le premier cas, autant écrire directement If Machin Then, dans le second If Not Machin Then pour renvoyer True quand Machin = False.

Ici, il n'y a même pas besoin de condition pour tester la valeur de la propriété Hidden, car on cherche juste à affecter à cette valeur Hidden, l'inverse de sa valeur actuelle.

Merci à toi Pedro22, tes conseils sont très utiles.

Peut-être à bientôt

Merci à toi Pedro22, tes conseils sont très utiles.

Peut-être à bientôt

Merci de ton retour, mais je ne suis pas seul à être intervenu pour t'aider.

Bonjour à tous, Salut Pedro22 !

@Pedro : Ne t'en fais pas, il est tout à fait normal que le mérite te revienne, tu as donné des explications très claires alors que je n'ai pas vraiment été généreux en détails...

Et je crois que ma réponse est passée inaperçue en plus.

A bientôt,

Rechercher des sujets similaires à "vba afficher masquer colonnes bouton icone"