Excel masquer et afficher des lignes vba [Résolu/Fermé]

Signaler
Messages postés
1
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
12 mars 2013
-
Messages postés
23599
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 octobre 2020
-
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

Messages postés
23599
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 octobre 2020
6 429
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

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
Messages postés
23599
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 octobre 2020
6 429
ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
eric
Messages postés
1098
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 septembre 2014
259
Essayer ca :

dim i as integer


for i = 34 to 101
if cells(i,7)="" then rows(i).entirerow.hide =true
next i


sinon enlever juste la ligne "End if" de votre code et ca marchera
Bonjour scinarf

Merci pour ta suggestion

Je crois que je ne comprends pas car elle ne fonctionne pas
Le code devrait me cacher à partir de la deuxième ligne après la dernière entrée de la colonne 7 jusqu'à la ligne 100
Et si j'enlève la dernière entrée le code devrait toujours me cacher le même nombre de ligne sous la dernière entrée Donc cacher et montrer.

Dis en d'autres mots

À la première cellule que tu rencontre de la colonne G qui est vide
Tu me cache à partir de deux lignes sous la dernière cellule plaine jusqu'à la ligne 100
Et ceci est toujours vrai même si je vide la dernière cellule plaine.

Exemple : ma dernière entrée et G35 il me cache la ligne 37 à 100
J'efface mon entrée de G5 donc la dernière entrée est devient G34 alors il me cache la ligne 36 à 100

Merci pour votre aide
Messages postés
1098
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 septembre 2014
259
Le problème provient probablement du fait qu'il faut afficher toutes les cellules cachées en début de programme pour pouvoir les cacher de nouveau ou les afficher si elles doivent ...

Sinon au clique du bouton ou a l'appel de la fonction, je suis pas sur qu'il va y avoir beaucoup de changement.

Regarde de ton coté,et je fais un petit quelques choses qui fonctionne pour le début de la semaine.
Messages postés
23599
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
27 octobre 2020
6 429
Bonjour,
Le problème provient probablement du fait qu'il faut afficher toutes les cellules cachées en début de programme pour pouvoir les cacher de nouveau ou les afficher si elles doivent ...
comme proposé ici quoi.
eric
Messages postés
1098
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 septembre 2014
259
Exacte ;)

Dsl je n'avais pas vu.