Excel masquer et afficher des lignes vba

Résolu/Fermé
Elstat Messages postés 1 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 12 mars 2013 - Modifié par Elstat le 12/03/2013 à 19:22
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 18 mars 2013 à 22:39
Bonjour, à tous

j'ai dans une page des lignes que je veux cacher si dans la colonne G à partire de la ligne 34 est vide et je veux cacher les lignes de la ligne 36 à 100.
exemple: si je place une valeur dans la cellule G35 je veux que la les lignes G37 à G100 ce masquent et si j'enlève la valeur dans la cellule G35 je veux que les ligne G36 à G100 ce masquent.

Je cherche à simplifier une liste de commande
If [G34] = "" Then Rows("36:100").EntireRow.Hidden = True
If [G35] = "" Then Rows("37:100").EntireRow.Hidden = True
If [G36] = "" Then Rows("38:100").EntireRow.Hidden = True
.
.
.

If [G98] = "" Then Rows("100:100").EntireRow.Hidden = True

Voici ma tentative de code et merci pour votre aide


Sub Masquer()

Dim I As Long

I = 34

Do While I < 101
If Cells(I, 7) = "" Then Cells(I + 2, 100).EntireRow.Hidden = True
End If
I = I + 1

Loop

End Sub

2 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 17/03/2013 à 00:25
Bonsoir,

Essaie avec ça.
Je me suis basé sur le texte :
exemple: si je place une valeur dans la cellule G35 je veux que la les lignes G37 à G100 ce masquent et si j'enlève la valeur dans la cellule G35 je veux que les ligne G36 à G100 ce masquent.
sans tenir compte si les cellules en-dessous sont pleines ou vides (ce que tu fais dans ton code (?))

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, [G36:G100]) Is Nothing Then Exit Sub 
    Rows("36:100").EntireRow.Hidden = False 
    Rows(Target.Row + IIf(Target = "", 1, 2) & ":100").EntireRow.Hidden = True 
End Sub

eric

PS: la prochaine fois utilise un site sans pub stp, comme cjoint.com

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
6
Bojour eriiic

Je te remerci
Ton code fonctionne à merveil
j'ai juste changer cette ligne
Rows(Target.Row + IIf(Target = "", 1, 2) & ":100").EntireRow.Hidden =
POUR
Rows(Target.Row + IIf(Target = "", 2, 3) & ":100").EntireRow.Hidden =
Ton code est très court et claire

Merci encore
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
18 mars 2013 à 22:39
ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
eric
0