Masquer/Afficher des lignes par activation de la feuille

Fermé
SamsamC - 17 sept. 2015 à 17:56
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 - 17 sept. 2015 à 22:22
Bonjour,

J'aimerais afficher ou masquer des lignes dans Excel en activant la feuille selon une condition: si dans la colonne A (exemple A2 à A100) la cellule est vide : ne pas afficher la ligne. Afficher la ligne dans le cas contraire. La feuille n'a pas de validation de données et n'est que pour consultation et impression. Les valeurs contenues dans la colonnes A proviennent d'une autre feuille.

Je commence en VBA, alors...
J'ai trouvé ça dans un blogue. Je l'ai modifié mais il y a erreur dans le programme:

Private Sub Worksheet_Activate()
Dim plage As Range, c As Range
Set plage = Union([A2:A30], [A31:A101])
For Each c In plage
If c.Value = "" Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next c
plage = Nothing
End Sub

Ça plante. Pouvez-vous m'aider?

A voir également:

1 réponse

PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
17 sept. 2015 à 18:06
Bonjour,

Nous venons de terminer un topic qui avait une question semblable
https://forums.commentcamarche.net/forum/affich-32536140-hauteur-de-lignes-a-0-si-ligne-vide

Masquer se résume a mettre la hauteur a zero.

Tu devrais pouvoir trouver l'information qui te faut.
Ensuite, si tu veux masquer à chaque activation de la feuille, il faut mettre le code dans l'évènement activate de la feuille.

Voici un très bon tutoriel sur la chose
https://silkyroad.developpez.com/VBA/EvenementsFeuille/
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
17 sept. 2015 à 22:22
Et aussi, je crois que ton code est fonctionnel, enlève seulement

plage = Nothing

Et pourquoi faire une union ?
Set plage = Range("A2:A100")
serait plus élégant.
0