Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 masquer ligne jusqu'à la prochaine cellule non vide d'une colonne

CHTING

XLDnaute Junior
Bonjour les membres du forum,

Pour mieux expliciter ma problématique, je vous joins un fichier en exemple
Je cherche à masquer ou démasquer des lignes à partir d'une cellule sélectionnée (case à cocher en colonne B) jusqu'à la prochaine cellule non vide en colonne C.
Sur mon exemple :
Je clic sur la cellule B4 (marqué d'un X) , ce qui enlève le "X" et je voudrais également pouvoir masquer toutes les lignes comprises entre C5 et C14 qui sont vides)
Idem, quand je clic à nouveau sur B5 alors je refais apparaitre les lignes masquée entre C5 et C14.
Je cherche donc à automatiser cette étapes sur tout un questionnaire dont le nombre de lignes "vides" sera aléatoire.
J'espère avoir été assez clair sur mon problème. C'est pas évident à l'écrit .

Dans tous les cas, je vous remercie de votre aide

Bien cordialement
 

Pièces jointes

  • EXCELDOWNLOAD TEST.xlsm
    20.2 KB · Affichages: 30

CHTING

XLDnaute Junior
Oui je sais que c'est pas très clair.

Plus simplement, je cherche un programme qui me permettra de masquer et démasquer les lignes entre deux cellules "non vide"
Grouper/dégrouper ne feront pas l'affaire, c'est pour des questionnaires beaucoup plus complexes que l'exemple.

merci de ton aide
 

Kaizers

XLDnaute Occasionnel
VB:
For i = 1 To 100


If sheets("Feuil1").Range("B" & I).Value = "X" Then Rows(I).Hidden = True

Else

Rows(I).Hidden = False

End If

Next I

à adapter, je privilégierais un 1 plutôt qu'un "X"
Oublie pas de définir I as Integer
 

Kaizers

XLDnaute Occasionnel
je viens de tester colle ça :

VB:
Sub Masquer()

Dim I As Integer

For I = 1 To 100


If Sheets("Feuil47").Range("A" & I).Value = "X" Then
Rows(I).Hidden = True
Else
Rows(I).Hidden = False
End If

Next I


End Sub

J'ai mis par rapport à la colonne A, à toi de mettre ce que tu veux
 

CHTING

XLDnaute Junior
Merci pour ton retour,

J'ai déjà testé ce type de code mais cela masque seulement la ligne qui contient le X.
Après on peut faire cela (désolé mais je ne sais pas encore comment écrire en code sur ce forum ):

Sub masquer ()
For i = 1 To 100

If Range("C" & i).Value = "" Then
Rows(i).Hidden = True
Else

Rows(i).Hidden = False

End If

Next i
End sub

Mais ça efface toutes les lignes dont les cellules sont vides en colonne C.
Je cherche un code qui (par exemple) masque les lignes vides de la colonne C entre 2 valeur X en colonne B.
Cad qui s'arrête au deuxième X (ou valeur rencontrer).

Merci
 

Kaizers

XLDnaute Occasionnel
Ah ben c'est écrit dans le code ce que ça fait :

If Range("C" & i).Value = "" Then

Si la cellule est vide, alors la ligne est masquée.

En fait je comprends, que tu tout masquer sauf tes lignes 5, 16 et 31 ?
Je comprends pas bien ton besoin, il me faut un cas concret
 

CHTING

XLDnaute Junior
J'ai réalisé de nombreux questionnaires (hors userform pour des raisons très particulières) avec des fausses cases à cocher (en B).
l'idée est d'avoir un ensemble de questions (en C) et si je clique sur la case en B, je mette automatiquement un X et j'ouvre les différentes réponses (en D et E) qui correspondent à la question. Et inversement si je décoche ma case.

Pour info mon code pour cocher mes cases avec un clic :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count = 1 _
And (Target.Column = 2 _
Or Target.Column = 5) _
And Target.Borders(xlEdgeLeft).Weight = xlMedium _
And Target.Borders(xlEdgeTop).Weight = xlMedium _
And Target.Borders(xlEdgeBottom).Weight = xlMedium _
And Target.Borders(xlEdgeRight).Weight = xlMedium Then

Target.Value = IIf(Target.Value = "X", "", "X")
Target.Font.Name = "WingDings"
Target.Font.Size = 12
Target.Interior.ColorIndex = IIf(Target.Value = "X", 41, 0)

End If

End Sub

Sinon, j'ai peut être trouvé en arrêtant la boucle si valeur en C en mettant "exit for" !!! maintenant je vais essayer de le mettre dans mon Private sub

For i = 1 To 100

If Range("C" & i).Value = "" Then
Rows(i).Hidden = True
End If

If Range("C" & i + 1).Value <> "" Then
Exit For
End If

Next i


Merci
 

Discussions similaires

Réponses
10
Affichages
606
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…