Masquer lignes vides via cellules sélection
Résolu
el-doyon
Messages postés
43
Statut
Membre
-
el-doyon -
el-doyon -
Bonjour,
dans un tableau j'ai 6 cellules de sélection via listes déroulantes ; cellules sur la même lignes de C11 à H11 qui entraînent l'apparition progressive d'info dans les cellules de la ligne 16 à 68.
Mon problème c'est que, selon le cas, seulement deux ou trois cellules de sélection (donc de C11 àH11) sont utilisées donc des lignes vides se créer forcément.
J'aimerais donc savoir si quelqu'un connait suffisamment les macros pour me proposer une solution qui ferait en sorte que les cellules vides seraient masquer pour chacune des cellules de sélection (de C11 à H11)
voici un lien vers mon exemple :
http://www.cijoint.fr/cjlink.php?file=cj200911/cijX030iAJ.xls
pour un autre fichier, gbinforme m'avait proposé cette solution qui marchait très bien (elle cachait les lignes vides associés aux cellules de sel A1 et A14), j'ai essayé de l'adapter avec mon cas précis mais je n'y arrive pas. je vous la donne si ça peut servir comme point de départ.
merci d'avance.
Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(Union([A1], [A14]), sel) Is Nothing Then
Dim col As Integer
Dim lig As Long
For lig = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
For col = Rows(lig).SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
If IsError(Cells(lig, col).Value) Then Exit For
If Cells(lig, col).Value > 0 Then Exit For
Next col
If col = 1 Then
Rows(lig).Hidden = True
Else
Rows(lig).Hidden = False
End If
Next lig
End If
End Sub
dans un tableau j'ai 6 cellules de sélection via listes déroulantes ; cellules sur la même lignes de C11 à H11 qui entraînent l'apparition progressive d'info dans les cellules de la ligne 16 à 68.
Mon problème c'est que, selon le cas, seulement deux ou trois cellules de sélection (donc de C11 àH11) sont utilisées donc des lignes vides se créer forcément.
J'aimerais donc savoir si quelqu'un connait suffisamment les macros pour me proposer une solution qui ferait en sorte que les cellules vides seraient masquer pour chacune des cellules de sélection (de C11 à H11)
voici un lien vers mon exemple :
http://www.cijoint.fr/cjlink.php?file=cj200911/cijX030iAJ.xls
pour un autre fichier, gbinforme m'avait proposé cette solution qui marchait très bien (elle cachait les lignes vides associés aux cellules de sel A1 et A14), j'ai essayé de l'adapter avec mon cas précis mais je n'y arrive pas. je vous la donne si ça peut servir comme point de départ.
merci d'avance.
Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(Union([A1], [A14]), sel) Is Nothing Then
Dim col As Integer
Dim lig As Long
For lig = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
For col = Rows(lig).SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
If IsError(Cells(lig, col).Value) Then Exit For
If Cells(lig, col).Value > 0 Then Exit For
Next col
If col = 1 Then
Rows(lig).Hidden = True
Else
Rows(lig).Hidden = False
End If
Next lig
End If
End Sub
A voir également:
- Masquer lignes vides via cellules sélection
- Verrouiller cellules excel - Guide
- Excel additionner plusieurs cellules - Guide
- Masquer conversation whatsapp - Guide
- Comment appeler en masquer - Guide
- Masquer amis facebook - Guide
1 réponse
Bonjour,
Voila une petite adaptation qui doit mieux fonctionner.
Quelques explications :
1/ on teste si c'est bien une valeur entre C11 et H11 qui est modifiée
2/ les lignes cachées sont celles qui ne contiennent que des cellules vides ou avec un espace (car certaines formules mettent un espace)
3/ le xlCellTypeLastCell donne la dernière ligne affichée (il me semble) d'ou la nécéssité de tout afficher avant
4/ Pour éviter les affichages "indésirables" pendant les boucles j'ai mis un screenupdating
A+
Voila une petite adaptation qui doit mieux fonctionner.
Private Sub Worksheet_Change(ByVal sel As Range)
Dim col As Integer
Dim lig As Long
Application.ScreenUpdating = False
If Not Intersect(Range("C11:H11"), sel) Is Nothing Then
Cells.Select
Selection.EntireRow.Hidden = False
For lig = Cells.SpecialCells(xlCellTypeLastCell).Row To 16 Step -1
For col = Rows(lig).SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
If IsError(Cells(lig, col).Value) Then Exit For
If Cells(lig, col).Value <> "" And Cells(lig, col).Value <> " " Then Exit For
Next col
If col = 0 Then
Rows(lig).Hidden = True
Else
Rows(lig).Hidden = False
End If
Next lig
End If
sel.Select
Application.ScreenUpdating = True
End Sub
Quelques explications :
1/ on teste si c'est bien une valeur entre C11 et H11 qui est modifiée
2/ les lignes cachées sont celles qui ne contiennent que des cellules vides ou avec un espace (car certaines formules mettent un espace)
3/ le xlCellTypeLastCell donne la dernière ligne affichée (il me semble) d'ou la nécéssité de tout afficher avant
4/ Pour éviter les affichages "indésirables" pendant les boucles j'ai mis un screenupdating
A+
A+,
el-doyon