OVH Cloud OVH Cloud

Column.Hidden sur plusieurs colonnes?

2 réponses
Avatar
Nangoustine
Salut à tous, j'ai encore un petit problème qui est certainement simple mais
dépasse mes compétences actuelles:

Je souhaite que sur les colonnes C:AW, lorsque ma formule en ligne 4 me
donne "Non", toute la colonne soit masquée.

Pour l'instant, j'ai donc cette solution qui marche pour une colonne, mais
je n'arrive pas à l'adapter de C à AW:
J'ai masqué ma colonne C et j'ai en parallèle la macro suivante :

Private Sub Worksheet_Calculate()
If Range("C4").Value <> Non Then
With Range("C4")
.EntireColumn.Hidden = False
End With
End If
End Sub

Sauriez vous comment adapter cette macro pour qu'elle me prenne en compte
les colonnes de C à AW?
--
Nangoustine

2 réponses

Avatar
anomymousA
bonjour,

ben , avec with range("C4:W4") ca devrait le faire , non ?

If Range("C4").Value <> Non Then
Range("C4:W4").EntireColumn.Hidden = False
else
Range("C4:W4").EntireColumn.Hidden = true
end if


A+


Salut à tous, j'ai encore un petit problème qui est certainement simple mais
dépasse mes compétences actuelles:

Je souhaite que sur les colonnes C:AW, lorsque ma formule en ligne 4 me
donne "Non", toute la colonne soit masquée.

Pour l'instant, j'ai donc cette solution qui marche pour une colonne, mais
je n'arrive pas à l'adapter de C à AW:
J'ai masqué ma colonne C et j'ai en parallèle la macro suivante :

Private Sub Worksheet_Calculate()
If Range("C4").Value <> Non Then
With Range("C4")
.EntireColumn.Hidden = False
End With
End If
End Sub

Sauriez vous comment adapter cette macro pour qu'elle me prenne en compte
les colonnes de C à AW?
--
Nangoustine


Avatar
Michel Gaboly
Bonsoir

Private Sub Masque
Dim c as Range
For each c in Range("C4:AW4")
If c = "Non" Then c.EntireColumn.Hidden = True
Next c
End Sub

Attention dans ton code à ne pas confondre Non (sans guillemet, qui
représente donc 1 variable) et "Non" (avec guillemets, qui est une
chaîne de caractères).

Pour éviter ce genre de problème, côche "Déclaration explicite des
variables" dans les options de l'environnement VBA. Cela te signalera
toute variable non prédéfinie, comme ici Non.

Enfin, aucune raison d'associer cela à Calculate, plutôt à Change, en
utilisant Intersect :

Private Sub Worksheet_Change(ByVal Target as Excel.Range)
Dim c as Range
If Not Intersect(Target, Range("C4:AW4") is Nothing Then
For Each c in Intersect(Target, Range("C4:AW4")
If c = "Non" Then c.EntireColumn.Hidden = True
Next
End If
End Sub

Attention, la comparaison est sensible à la casse (fait la différence
entre minuscules et majuscules). Pour éviter cela, il faut écrire :

If UCase(C) = "NON" Then


Salut à tous, j'ai encore un petit problème qui est certainement simple mais
dépasse mes compétences actuelles:

Je souhaite que sur les colonnes C:AW, lorsque ma formule en ligne 4 me
donne "Non", toute la colonne soit masquée.

Pour l'instant, j'ai donc cette solution qui marche pour une colonne, mais
je n'arrive pas à l'adapter de C à AW:
J'ai masqué ma colonne C et j'ai en parallèle la macro suivante :

Private Sub Worksheet_Calculate()
If Range("C4").Value <> Non Then
With Range("C4")
.EntireColumn.Hidden = False
End With
End If
End Sub

Sauriez vous comment adapter cette macro pour qu'elle me prenne en compte
les colonnes de C à AW?



--
Cordialement,

Michel Gaboly
www.gaboly.com