Masquer des lignes suivant le contenu d'une cellule
Résolu
roukili
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Masquer des lignes suivant le contenu d'une cellule
- Suivi des modifications word - Guide
- Aller à la ligne dans une cellule excel - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Masquer une conversation whatsapp - Guide
- Partager des photos en ligne - Guide
2 réponses
Bonjour,
En ce moment, votre code possède une seule boucle FOR.
Donc vous faite une boucle pour vérifier les lignes 18 et suivante pour la colonne BM.
Il vous faudrait imbriquer deux boucle FOR pour que une fois la colonne BM soit vérifié, on passe à la suivante.
For colonne debut à la fin
For ligne debut à la fin
IF valeur = oui
on affiche la ligne
Prochaine ligne
Prochaine colonne
Aussi, il y a un problème logique avec la demande.
Disons que dans la colonne BM , ligne 19 , il y a "DQ Russie",
alors on ne cache pas la ligne 19.
on continue scanner les lignes, et ensuite on passe à la colonne suivante BN,
colonne BN , la ligne 19 , n'a pas "DQ Russie",
alors on la cache la ligne 19.
Donc, la colonne BN vient de contrecarrer ce qu'on avait fait pour la ligne 19.
D'un point de vu programmation, il faudrait TOUT cacher, et ensuite faire apparaitre les cellules qui ont la valeur voulu (donc pas de Else dans le code que vous avez fourni).
Donc si la valeur est trouver en BM ligne 19, la ligne apparait, et si en BN ligne 19 elle n'y est pas, on ne fait rien et la ligne reste visible quand même.
En ce moment, votre code possède une seule boucle FOR.
Donc vous faite une boucle pour vérifier les lignes 18 et suivante pour la colonne BM.
Il vous faudrait imbriquer deux boucle FOR pour que une fois la colonne BM soit vérifié, on passe à la suivante.
For colonne debut à la fin
For ligne debut à la fin
IF valeur = oui
on affiche la ligne
Prochaine ligne
Prochaine colonne
Aussi, il y a un problème logique avec la demande.
Disons que dans la colonne BM , ligne 19 , il y a "DQ Russie",
alors on ne cache pas la ligne 19.
on continue scanner les lignes, et ensuite on passe à la colonne suivante BN,
colonne BN , la ligne 19 , n'a pas "DQ Russie",
alors on la cache la ligne 19.
Donc, la colonne BN vient de contrecarrer ce qu'on avait fait pour la ligne 19.
D'un point de vu programmation, il faudrait TOUT cacher, et ensuite faire apparaitre les cellules qui ont la valeur voulu (donc pas de Else dans le code que vous avez fourni).
Donc si la valeur est trouver en BM ligne 19, la ligne apparait, et si en BN ligne 19 elle n'y est pas, on ne fait rien et la ligne reste visible quand même.
roukili
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
je vois trop comment faire apparaitre des lignes qui sont déjà masquées suivant leurs contenus
j'ai aussi essayé ce code mais il ne fonctionne pas non plus
Private Sub CommandButton1_Click()
Dim src As Range
Dim dst As Range
Dim cel As Range
Cells.EntireRow.Hidden = False
Set src = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
Set src = Range("K17:DE88").SpecialCells(xlCellTypeConstants, xlTextValues)
For Each cel In src.Cells
If cel.Value Like "*DE*" Then
If dst Is Nothing Then Set dst = cel Else Set dst = Union(dst, cel)
End If
Next cel
If Not dst Is Nothing Then
'Cells.EntireRow.Hidden = True
dst.EntireRow.Hidden = True
End If
End Sub
Private Sub CommandButton1_Click()
Dim src As Range
Dim dst As Range
Dim cel As Range
Cells.EntireRow.Hidden = False
Set src = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
Set src = Range("K17:DE88").SpecialCells(xlCellTypeConstants, xlTextValues)
For Each cel In src.Cells
If cel.Value Like "*DE*" Then
If dst Is Nothing Then Set dst = cel Else Set dst = Union(dst, cel)
End If
Next cel
If Not dst Is Nothing Then
'Cells.EntireRow.Hidden = True
dst.EntireRow.Hidden = True
End If
End Sub
Re-bonjour,
Si on recommence à partir du code fourni au départ.
Si on recommence à partir du code fourni au départ.
Private Sub CommandButton1_Click() Dim Tableau as range Cells.EntireRow.Hidden = False 'On commence par tout affichier Set tableau = Range("K17:DE88") 'Tableau c'est ou sont les données, corrige au besoin tableau.EntireRow.Hidden = True 'On CACHE cette zone For C = 17 To Cells(17, Cells.Columns.Count).End(xlToLeft).Column 'Pour chaque colonne For L = 11 To Range("K" & Rows.Count).End(xlUp).Row 'On regarde chaque ligne If Cells(L, C).Value Like "*DE*" Then 'on vérifie si la valeur contient "DE" Rows(L).EntireRow.Hidden = False 'Et si oui, on affichie End If Next L 'Prochaine ligne Next C 'Prochaine colonne End Sub
Private Sub CommandButton1_Click() Dim Tableau as range Cells.EntireRow.Hidden = False 'On commence par tout afficher Set tableau = Range("K17:DE88") 'Tableau c'est ou sont les données, corrige au besoin tableau.EntireRow.Hidden = True 'On CACHE cette zone tableau.EntireColumn.Hidden = True 'On CACHE cette zone For C = 17 To Cells(17, Cells.Columns.Count).End(xlToLeft).Column 'Pour chaque colonne For L = 11 To Range("K" & Rows.Count).End(xlUp).Row 'On regarde chaque ligne If Cells(L, C).Value Like "*DE*" Then 'on vérifie si la valeur contient "DE" Rows(L).EntireRow.Hidden = False 'Et si oui, on affiche Columns(C).EntireColumn.Hidden = false End If Next L 'Prochaine ligne Next C 'Prochaine colonne End Sub