Excel masquer et afficher des lignes vba

Résolu
Elstat Messages postés 1 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. elstat
       
      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
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
      eric
      0