Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Masquer ou afficher une plage

9 réponses
Avatar
AB
Bonjour à tous,

Je cherche, dans feuil2, à masquer ou afficher une plage de cellules, en
fonction de la valeur d'une cellule donnée (H4).
Si H4 est >=0, je veux afficher la plage ("B12:C18"), sinon, je veux la
masquer.
J'ai tenté ce code, mais ça ne marche pas, bien sûr...
Ne rigolez pas, svp !!!

Private Sub Worksheet_Change(ByVal H4 As Range)
If target.Address <> "$H$4" Then Exit Sub
With ActiveSheet.Range("B12:C18")
If [H4] >= 0 Then .Visible = True Else .Visible = False
End With
End Sub

Comment faire ?
André

9 réponses

Avatar
Patrick Fredin
Bonjour

Private Sub Worksheet_Change(ByVal Target As Range)
'Il faut mettre "Target" après "ByVal"


If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
'Il faut mettre le format de l'adresse


With ActiveSheet.Range("B12:C18")
If [H4] >= 0 Then .Visible = True Else .Visible = False
End With
End Sub


Essais avec cela.

--
Patrick

"AB" wrote in message
news:Og4rwn$
Bonjour à tous,

Je cherche, dans feuil2, à masquer ou afficher une plage de cellules, en
fonction de la valeur d'une cellule donnée (H4).
Si H4 est >=0, je veux afficher la plage ("B12:C18"), sinon, je veux la
masquer.
J'ai tenté ce code, mais ça ne marche pas, bien sûr...
Ne rigolez pas, svp !!!

Private Sub Worksheet_Change(ByVal H4 As Range)
If target.Address <> "$H$4" Then Exit Sub
With ActiveSheet.Range("B12:C18")
If [H4] >= 0 Then .Visible = True Else .Visible = False
End With
End Sub

Comment faire ?
André




Avatar
AB
Bonsoir Patrick, et merci de ton aide.
J'ai suivi tes conseils et copié le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
With ActiveSheet.Range("B12:C18")
If [H4] > 0 Then .Visible = True Else .Visible = False
End With
End Sub

Lorsque H4 est égal à zéro, ma plage ne devrait pas s'afficher. Pourtant,
elle reste visible...
J'ai raté quelque chose ?
André


"Patrick Fredin" a écrit dans le
message de news: ecDxSt$
| Bonjour
|
| > Private Sub Worksheet_Change(ByVal Target As Range)
| 'Il faut mettre "Target" après "ByVal"
|
| > If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
| 'Il faut mettre le format de l'adresse
|
| > With ActiveSheet.Range("B12:C18")
| > If [H4] >= 0 Then .Visible = True Else .Visible = False
| > End With
| > End Sub
|
| Essais avec cela.
|
| --
| Patrick
|
| "AB" wrote in message
| news:Og4rwn$
| > Bonjour à tous,
| >
| > Je cherche, dans feuil2, à masquer ou afficher une plage de cellules, en
| > fonction de la valeur d'une cellule donnée (H4).
| > Si H4 est >=0, je veux afficher la plage ("B12:C18"), sinon, je veux la
| > masquer.
| > J'ai tenté ce code, mais ça ne marche pas, bien sûr...
| > Ne rigolez pas, svp !!!
| >
| > Private Sub Worksheet_Change(ByVal H4 As Range)
| > If target.Address <> "$H$4" Then Exit Sub
| > With ActiveSheet.Range("B12:C18")
| > If [H4] >= 0 Then .Visible = True Else .Visible = False
| > End With
| > End Sub
| >
| > Comment faire ?
| > André
| >
| >
|
|
Avatar
Pounet95
Bonsoir,
Otes-moi d'un doute, STP.
Est-ce que la macro fonctionne ou a fonctionné un tant soit peu ?
La propriété Visible n'existe pas pour l'objet Range. Donc quelle que soit
la valeur de H4,
je ne vois pas comment cela peut fonctionner.
Je pense que pour cacher le contenu d'une plage ( différente d'une colonne
et d'une ligne ),
il faut écrire celui-ci dans la même couleur que le fond de la cellule.


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"AB" a écrit dans le message de news:
%232%
Bonsoir Patrick, et merci de ton aide.
J'ai suivi tes conseils et copié le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
With ActiveSheet.Range("B12:C18")
If [H4] > 0 Then .Visible = True Else .Visible = False
End With
End Sub

Lorsque H4 est égal à zéro, ma plage ne devrait pas s'afficher. Pourtant,
elle reste visible...
J'ai raté quelque chose ?
André


"Patrick Fredin" a écrit dans le
message de news: ecDxSt$
| Bonjour
|
| > Private Sub Worksheet_Change(ByVal Target As Range)
| 'Il faut mettre "Target" après "ByVal"
|
| > If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit
Sub
| 'Il faut mettre le format de l'adresse
|
| > With ActiveSheet.Range("B12:C18")
| > If [H4] >= 0 Then .Visible = True Else .Visible = False
| > End With
| > End Sub
|
| Essais avec cela.
|
| --
| Patrick
|
| "AB" wrote in message
| news:Og4rwn$
| > Bonjour à tous,
| >
| > Je cherche, dans feuil2, à masquer ou afficher une plage de cellules,
en
| > fonction de la valeur d'une cellule donnée (H4).
| > Si H4 est >=0, je veux afficher la plage ("B12:C18"), sinon, je veux
la
| > masquer.
| > J'ai tenté ce code, mais ça ne marche pas, bien sûr...
| > Ne rigolez pas, svp !!!
| >
| > Private Sub Worksheet_Change(ByVal H4 As Range)
| > If target.Address <> "$H$4" Then Exit Sub
| > With ActiveSheet.Range("B12:C18")
| > If [H4] >= 0 Then .Visible = True Else .Visible = False
| > End With
| > End Sub
| >
| > Comment faire ?
| > André
| >
| >
|
|




Avatar
Starwing
Bonjour essaie:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
With ActiveSheet.Range("B12:C18")
If [H4] = 0 Then .Visible = False Else .Visible = True
If [H4] > 0 Then .Visible = True Else .Visible = False
End With
End Sub

....
Avatar
AB
Merci à vous deux aussi,
Non, la macro n'a jamais fonctionné...(le code proposé par Starwing ne
fonctionne pas non plus)
J'aurais aimé trouver un autre moyen que de modifier la couleur de la
police.
AV m'avait donné un code pour cacher ou non un contrôle, en fonction de la
valeur de A1.
Je le reproduis ci-après :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
With ActiveSheet.Shapes("maZ")
If [zz] = 1 Then .Visible = False Else .Visible = True
End With
End Sub
Je ne comprends pas que ça ne puisse pas se faire pour une plage.
En tout cas, c'est sympa de m'aider.
André

"Starwing" a écrit dans le message de news:
Oo%23%
| Bonjour essaie:
|
| Private Sub Worksheet_Change(ByVal Target As Range)
| If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
| With ActiveSheet.Range("B12:C18")
| If [H4] = 0 Then .Visible = False Else .Visible = True
| If [H4] > 0 Then .Visible = True Else .Visible = False
| End With
| End Sub
|
| ....
|
|
Avatar
Pounet95
Re bonsoir,
Je comprends mieux le .Visible ! C'était pour un contrôle Shape.
Je répète donc, pour une cellule cette propriété n'existe pas.
Il faut user d'artifices qui ne soient pas facilement contournables par
l'utilisateur
"mal intentionné".

Question : quel est le but recherché en cachant cette plage de cellules ?
Nombre d'entre nous sur ce forum aura peut-être la solution ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"AB" a écrit dans le message de news:

Merci à vous deux aussi,
Non, la macro n'a jamais fonctionné...(le code proposé par Starwing ne
fonctionne pas non plus)
J'aurais aimé trouver un autre moyen que de modifier la couleur de la
police.
AV m'avait donné un code pour cacher ou non un contrôle, en fonction de la
valeur de A1.
Je le reproduis ci-après :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
With ActiveSheet.Shapes("maZ")
If [zz] = 1 Then .Visible = False Else .Visible = True
End With
End Sub
Je ne comprends pas que ça ne puisse pas se faire pour une plage.
En tout cas, c'est sympa de m'aider.
André

"Starwing" a écrit dans le message de news:
Oo%23%
| Bonjour essaie:
|
| Private Sub Worksheet_Change(ByVal Target As Range)
| If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
| With ActiveSheet.Range("B12:C18")
| If [H4] = 0 Then .Visible = False Else .Visible = True
| If [H4] > 0 Then .Visible = True Else .Visible = False
| End With
| End Sub
|
| ....
|
|




Avatar
Starwing
Bonsoir,

Une autre solution... Cacher les lignes...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
If [H4] >= 0 Then CacheLignesActives Else LignesActives
End Sub

Dans un module standard:

Sub CacheLignesActives()
Range("B12:C18").Select
Selection.EntireRow.Select
Selection.EntireRow.Hidden = True
End Sub
'****************
Sub LignesActives()
Range("B12:C18").Select
Selection.EntireRow.Select
Selection.EntireRow.Hidden = False
End Sub


Starwing
Avatar
AB
Salut,
J'élabore des scénarios (pas de films !).
Pour chaque scénario, j'ai du texte dans certaines cellules, et des valeurs
numériques dans d'autres. Selon la valeur d'une cellule donnée, c'est le
scénario 1 ou 2 ou 3, etc. qui sort.
Quand il n'y a pas trop de cellules concernées, je m'en sors avec des
fonctions SI : je mets dans les cellules voulues des formules du style :
=SI(A1=1;"Vous avez choisi de ne pas augmenter vos prix cette année";"")
Mais quand il y a beaucoup de cellules, c'est fastidieux.
C'est pourquoi, je préfèrerais masquer ou afficher toute une plage, en
fonction de la valeur d'une cellule donnée.
Je précise qu'ensuite, je transmets ça à un informaticien (un vrai !) qui
traduit tout ça pour que ce soit publié sur le web.
Je ne peux donc pas trop jouer sur les couleurs de police pour masquer ou
afficher telle plage.
J'ai une idée, qui consiste à placer mes plages ailleurs dans la feuille,
et, selon la valeur de la cellule critère, faire un copier/coller de la
bonne plage au bon endroit.
Je suis preneur d'une solution plus élégante.
Cordialement,
André


"Pounet95" a écrit dans le message de news:
%
| Re bonsoir,
| Je comprends mieux le .Visible ! C'était pour un contrôle Shape.
| Je répète donc, pour une cellule cette propriété n'existe pas.
| Il faut user d'artifices qui ne soient pas facilement contournables par
| l'utilisateur
| "mal intentionné".
|
| Question : quel est le but recherché en cachant cette plage de cellules ?
| Nombre d'entre nous sur ce forum aura peut-être la solution ?
|
| --
| Pounet95
| on trouve tout ( ou presque ) http://www.excelabo.net/
| "AB" a écrit dans le message de news:
|
| > Merci à vous deux aussi,
| > Non, la macro n'a jamais fonctionné...(le code proposé par Starwing ne
| > fonctionne pas non plus)
| > J'aurais aimé trouver un autre moyen que de modifier la couleur de la
| > police.
| > AV m'avait donné un code pour cacher ou non un contrôle, en fonction de
la
| > valeur de A1.
| > Je le reproduis ci-après :
| > Private Sub Worksheet_Change(ByVal zz As Range)
| > If zz.Address <> "$A$1" Then Exit Sub
| > With ActiveSheet.Shapes("maZ")
| > If [zz] = 1 Then .Visible = False Else .Visible = True
| > End With
| > End Sub
| > Je ne comprends pas que ça ne puisse pas se faire pour une plage.
| > En tout cas, c'est sympa de m'aider.
| > André
| >
| > "Starwing" a écrit dans le message de news:
| > Oo%23%
| > | Bonjour essaie:
| > |
| > | Private Sub Worksheet_Change(ByVal Target As Range)
| > | If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
| > | With ActiveSheet.Range("B12:C18")
| > | If [H4] = 0 Then .Visible = False Else .Visible = True
| > | If [H4] > 0 Then .Visible = True Else .Visible = False
| > | End With
| > | End Sub
| > |
| > | ....
| > |
| > |
| >
| >
|
Avatar
AB
Merci Starwing. Pas bête, en effet...
Je n'y avais même pas pensé !
Bonne soirée (j'en ai ras le bol : je vais au dodo...)
A+
André

"Starwing" a écrit dans le message de news:

| Bonsoir,
|
| Une autre solution... Cacher les lignes...
|
| Private Sub Worksheet_Change(ByVal Target As Range)
| If Target.Address(ReferenceStyle:=xlA1) <> "$H$4" Then Exit Sub
| If [H4] >= 0 Then CacheLignesActives Else LignesActives
| End Sub
|
| Dans un module standard:
|
| Sub CacheLignesActives()
| Range("B12:C18").Select
| Selection.EntireRow.Select
| Selection.EntireRow.Hidden = True
| End Sub
| '****************
| Sub LignesActives()
| Range("B12:C18").Select
| Selection.EntireRow.Select
| Selection.EntireRow.Hidden = False
| End Sub
|
|
| Starwing
|
|
|