Masquer des lignes suivant le contenu d'une cellule
Résolu
roukili
Messages postés
17
Statut
Membre
-
PlacageGranby Messages postés 402 Statut Membre -
PlacageGranby Messages postés 402 Statut Membre -
Bonjour,
j'ai un fichier Excel qui contient des données et je souhaite masquer les lignes et les colonnes qui ne contiennent pas une chaine de caractères; "DE" par exemple
j'ai essayé ce code mais il ne fonctionne pas car il prend en compte seulement une seule colonne:
Private Sub CommandButton1_Click()
Cells.EntireRow.Hidden = False
For L = 18 To Range("Feuil15" & Rows.Count).End(xlUp).Row
If Range("BM" & L).Value = "DQ Russie" Then
Rows(L).EntireRow.Hidden = False
Else
Rows(L).EntireRow.Hidden = True
End If
Next
End Sub
je vous remercie d'avance pour votre aide merci
j'ai un fichier Excel qui contient des données et je souhaite masquer les lignes et les colonnes qui ne contiennent pas une chaine de caractères; "DE" par exemple
j'ai essayé ce code mais il ne fonctionne pas car il prend en compte seulement une seule colonne:
Private Sub CommandButton1_Click()
Cells.EntireRow.Hidden = False
For L = 18 To Range("Feuil15" & Rows.Count).End(xlUp).Row
If Range("BM" & L).Value = "DQ Russie" Then
Rows(L).EntireRow.Hidden = False
Else
Rows(L).EntireRow.Hidden = True
End If
Next
End Sub
je vous remercie d'avance pour votre aide merci
A voir également:
- Masquer des lignes suivant le contenu d'une cellule
- Suivi des modifications word - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Partager des photos en ligne - Guide
- Masquer une conversation whatsapp - 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
Statut
Membre
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