Option Explicit
Sub HideShowColumns()
Dim b As Boolean: b = Columns("L").Hidden: Columns("L:P").Hidden = Not b
ActiveSheet.Shapes("Rectangle 1").TextFrame.Characters.Text = _
IIf(b, "Masqu", "Affich") & "er les détails"
End Sub
Dim b As Boolean
: déclare une variable b, de type booléen ; cette variable booléenne peut donc contenir la valeur True (=Vrai) ou False (=Faux).b = Columns("L").Hidden
; si la colonne L est cachée, ce qui est le cas quand on a masqué les colonnes L:P
, alors b vaut True ; sinon : si la colonne L est visible, ce qui est le cas quand on a affiché les colonnes L:P
, alors b vaut False.Columns("L:P").Hidden = Not b
: pour les colonnes L:P
, on positionne Hidden à l'inverse de la valeur de b : si b = True (car L était cachée), alors ça met .Hidden = Not True ; donc .Hidden = False : on affiche L:P
; dans le cas contraire : si b = False (car L était visible), alors ça met .Hidden = Not False ; donc .Hidden = True : on masque L:P
; il s'agit donc bien d'une inversion de l'état caché ou non pour les colonnes L:P
.IIf(b, "Masqu", "Affich") & "er les détails"
; si b est True, ça affiche "Masqu" & "er les détails" ; si b est False, ça affiche "Affich" & "er les détails".IIf()
est l'équivalent VBA du SI()
; il y a donc 3 parties entre les parenthèses : 1er argument = la condition ; 2ème argument = ce qu'on veut si le test est VRAI ; 3ème argument = ce qu'on veut si le test est FAUX.IIf(b, "Masqu", "Affich")
est une abréviation de : IIf(b=True, "Masqu", "Affich")
Option Explicit
Sub HideShowColumns()
With Columns("L:P")
.Hidden = Not .Hidden:
ActiveSheet.Shapes("Rectangle 1").TextFrame.Characters.Text = Array("Afficher ", "Masquer ")(Abs(Not .Hidden)) & "les détails"
End With
End Sub
With Columns("L:P")
.Hidden = Not .Hidden:
Columns("L:P").Hidden = Not Columns("L:P").Hidden