Macro pour masquer ou afficher des cellules sous Excel

salut tout le monde,

voilà, je cherche à faire une macro sous Excel qui me permet de masquer ou d'afficher une plage de cellules selon une condition que j'aurais imposé. C'est à dire, selon le résultat d'un test ou d'un choix, je voudrais que certaines cellules soient masquées ou affichées.

Est ce que vous pouvez m'aider s'il vous plait !

merci d'avance

Bonjour,

C'est possible.

Quelle plage de cellule et quel critère ?

Sinon un exemple :

Sub cache()
Dim cel As Range
Dim w As Worksheet
On Error Resume Next
For Each w In ThisWorkbook.Worksheets
w.Select
For Each cel In Range("A5:O60")
If cel.Value = "Annulé" Then
cel.EntireRow.Hidden = True
End If
Next cel
Next w
End Sub

A te lire

Dan

Merci Nad-Dan pour ta réponse, je vais essayer ton code.

en fait, j'ai une feuille de calculs, et selon le résultats de certaines vérification, des cellules devront être masquées ou affichées. Par exemple (voir fichier joint): je fais un calcul et si les cellules de vérification contiennent la valeur "OK" ou "Respectée", les cellules qui sont en-dessous de la plage "Résultats" doivent être masquées. ("Résultats"=plage des cellules en vert clair)

Merci d'avance

Fichier exemple:

https://www.excel-pratique.com/~files/doc/TestMacro.xls

Re,

Si je comprends c'est F34, F35 et F36 qui doivent être cachées en fonction de OK.

Il y a 4 OK dans ta ligne 20.

Faut-il les 4 OK ou un seul suffit pour cacher les cellules F34, F35 et F36 ?

A te lire

Dan

ça dépend du cas de l'utilisateur, mais pour simplifier les choses tu peux considérer que pour cacher les cellules en-dessous de la plage "Résultats", il faut uniquement les 2 premiers "OK" (colonnes "Standard" et "H. Flex").

En fait, les cellules qu'il faut cacher ou masquer sont celles à partir de la ligne 40 et pas F34, F35 et F36 !

Merci d'avance

re,

EDITION

  • Vas dans VBA par ALT +F11
  • CTRL + R pour sélectionner VBA projetc
  • double clique sur la feuille concernée (ici feuil1)
  • A droite place cette macro :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Macro par Dan le 14/08/07
With Rows("40:61").EntireRow
If Range("F20") = "OK" And Range("G20") = "OK" Then
.Hidden = True
Else: .Hidden = False
End If
End With
End Sub

- enregistre ton fichier

A te lire

Dan

Re ...

j'ai reçu ton dernier message mais il y a rien dedans, peut être tu voulais joindre un fichier et t'as oublié ?

merci

re,

Normal je l'ai édité car ce que j'ai dit n'était pas correct

Dan

Salut le forum

Dans le début du code

With Rows("40:61").EntireRow

le .EntireRow n'a pas besoin d'être With Rows("40:61") est suffisant

Mytå

un grand merci pour le code, je suis en train de l'essayer

merci encore une fois.

salutNad-Dan et tout le mond,

merci encore une fois pour le code de la macro, je l'ai un peu mouliné pour l'adapter à ce que je veux et ça marche, par contre quand j'ajoute d'autres macro dans la même feuille du code pourcacher ou afficher d'autres cellules, elles ne sont pas prise en considération, il y a que la première macro qui tourne, pourtant c'est exactement le même code avec des N° de cellules différents.

est ce que vous avez une idée de ce problème?

il y a mon fichier en pièce jointe

https://www.excel-pratique.com/~files/doc/TestMacro2.xls

Bonjour,

Normal cela car tu mets deux macro Private Sub Worksheet_Change(ByVal Target As Excel.Range).

Tu dois en fait combiner les deux.

Rajoute cette partie de macro dans la première avant le END SUB et supprime la macro "....change1...."

With Rows("25:30")
      If Range("N20") = "OK" And Range("O20") = "OK" Then
        .Hidden = True
        Else: .Hidden = False
        End If
 End With

A te lire

Dan

merci pour la réponse, en fait c'est exactement ce que j'ai fait entre-temps et ça marche.

sinon, je voudrais savoir s'il y a moyen de masquer ou afficher une plage de cellules et pas entièrement des lignes ou des colonnes, par exemple masquer la plage de cellules (C15:F25) ?

merci

Re,

Masquer une plage de cellules n'est pas possible comme tu le penses.

La seule "bidouille" serait de jouer sur les couleurs en utilisant une Mise en forme conditionnelle. Par exemple, en fonction d'un critère à définir (comme tu l'as fait pour la macro) chosisir des couleurs de police identiques aux couleur de fond des cellules.

A voir si cela t'intéresse et en fonction de quel critère. LA MFC est limitée à trois conditions. Au delà, il faut passer par macro.

A te lire

Dan

Re,

merci pour l'astuce, mais bon j'ai fait en sorte que mes cellules à cacher/afficher soient isolées, càd j'ai un peu joué sur la position de ces cellules.

et comme je suis entrain de découvrir le monde des macro sous Excel, j'ai une autre question: comment rendre un bouton actif ou inactif en fonction de certaines conditions?

merci d'avance

Re,

Avec ce code c'est possible si tu le places en VBA dans la feuille où se trouve le bouton --> CommandButton1.Enabled = True (bouton N°1) où True doit être mis à False pour désactiver le bouton.

A te lire

Dan

Re,

en fait j'ai testé ça avant mais ça marche pas !!

qu'est ce que tu veux dire par "le placer dans la VBA"? car moi je l'ai placé dans la feuille du code des macros et je remplace le "Button1" par le nom de mon boutton.

merci

Re,

Tu pourrais mettre le code ici que l'on puisse l'analyser.

A te lire

Dan

salut Nad-Dan, salut tout le monde,

désolé pour ce retard, j'avais un problème de connexion !!

le code du boutton est mis dans "Module 1", voici le code:

'Macro pour valider Zmini et afficher/masquer les cellules de la poulie folle

Sub PoulieFolle_QuandClic()

'If Range("A68") = "" Then CommandButton7.Enabled = False

'pour activer CommandButton1.Enabled=False

'pour désactiver CommandButton1.Enabled = True

'Else: CommandButton7.Enabled = True

'End If

With Rows("55:60").EntireRow

.Hidden = False

End With

End Sub

merci d'avance

Salut le forum

Juste une condition en début de macro, pas besoin de jouer avec le enabled

Sub PoulieFolle_QuandClic() 
If Range("A68") = "" Then exit sub
'...
'le reste de ta macro
'...
End Sub

En passant

pour rendre actif un bouton CommandButton1.Enabled=True

et pour le rendre inactif un bouton CommandButton1.Enabled=False

Mytå

Rechercher des sujets similaires à "macro masquer afficher"