Masquer des lignes suivant le contenu d'une cellule
Résolu/Fermé
roukili
Messages postés
17
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
6 juillet 2015
-
2 juil. 2015 à 14:44
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 - 2 juil. 2015 à 16:39
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 - 2 juil. 2015 à 16:39
A voir également:
- Masquer des lignes suivant le contenu d'une cellule
- Aller à la ligne dans une cellule excel - Guide
- Suivi des modifications word - Guide
- Excel cellule couleur si condition texte - Guide
- Masquer une conversation whatsapp - Guide
- Verrouiller cellule excel - Guide
2 réponses
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
2 juil. 2015 à 15:13
2 juil. 2015 à 15:13
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
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
6 juillet 2015
2 juil. 2015 à 15:24
2 juil. 2015 à 15:24
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
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
2 juil. 2015 à 15:57
2 juil. 2015 à 15:57
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
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
>
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
Modifié par PlacageGranby le 2/07/2015 à 16:04
Modifié par PlacageGranby le 2/07/2015 à 16:04
On pourra adapter ce code selon tes besoins s'il y a un problème.
Je ne sais pas ou sont tes données, basé sur ton message précédent je devine K17 a DE88. mais dans ton premier message c'était a partir de la ligne 18 et non pas 17
Je ne sais pas ou sont tes données, basé sur ton message précédent je devine K17 a DE88. mais dans ton premier message c'était a partir de la ligne 18 et non pas 17
roukili
Messages postés
17
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
6 juillet 2015
>
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
2 juil. 2015 à 16:22
2 juil. 2015 à 16:22
il fonctionne à merveille seulement j'ai une dernière question je veux faire la même chose sur les colonnes et les lignes à la fois et oui K17 et DE88 c'est la plage ou je fais l'étude
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
>
roukili
Messages postés
17
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
6 juillet 2015
Modifié par PlacageGranby le 2/07/2015 à 16:40
Modifié par PlacageGranby le 2/07/2015 à 16:40
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
2 juil. 2015 à 15:20