Faire disparaitre ligne selon valeur colonne A

Bonjour,

Dans le cadre de mon travail j'ai besoin de faire apparaitre ou disparaitre des lignes selon condition de valeur dans la première colonne.

Voici les explications simplifiées :

Je dispose de valeur dans la colonne A (soit 1, soit 0)

Je veux pouvoir avec un bouton faire apparaitre que les lignes dont la valeur de la colonne A soit uniquement 0

Je veux pouvoir avec un bouton faire apparaitre que les lignes dont la valeur de la colonne A soit uniquement 1

Merci pour vos réponses !!

Bonne soirée,

FlorianB89

Bonsoir Florian,

je te propose ce fichier Excel :

15exo-florian.xlsm (15.92 Ko)

Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonsoir,

Réponse simplifiée

Sub Test(Optional h As Integer)
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In [Plage]
        c.EntireRow.Hidden = c.Value - h
    Next c
End Sub

Pas si simplifiée que ça d'ailleurs !

Pour les boutons :

Sub Démo1()
    Test 1
End Sub

Sub Démo2()
    Test 0
End Sub

chacun indique ce qu'il veut voir.

Cordialement.

edit : Salut Dhany

Salut Florian,

voici...

Public Sub ShowRows(ByVal iIdx%)
'
Application.ScreenUpdating = False
'
For x = 1 To UsedRange.Rows.Count
    Rows(x).Hidden = IIf(iIdx = 2, False, IIf(Range("A" & x).Value = iIdx, False, True))
Next
ActiveWindow.ScrollRow = 1
'
Application.ScreenUpdating = True
'
End Sub

A+

4showrows.xlsm (23.44 Ko)

C'est trop de la frappe ce que tu m'as sortie là !!!!!😄

Un grand merci 🙃

Bonjour Florian,

voici quelques explications complémentaires :

c'est la sub privée HideLigs() qui fait tout le travail ; elle n'est jamais appelée directement par l'utilisateur ; elle est appelée par chacune des 3 autres subs, via un bouton de commande situé sur Feuil1 :

Sub ShowAll()
  HideLigs 2
End Sub

Sub Show0()
  HideLigs 1
End Sub

Sub Show1()
  HideLigs 0
End Sub

* le bouton « Toutes les lignes » lance la macro ShowAll(), qui appelle HideLigs() avec le paramètre 2

* le bouton « Lignes 0 » lance la macro Show0(), qui appelle HideLigs() avec le paramètre 1

* le bouton « Lignes 1 » lance la macro Show1(), qui appelle HideLigs() avec le paramètre 0


ainsi, toute la suite est dans HideLigs(), selon la valeur de v (2 ; 1 ; ou 0) :

Private Sub HideLigs(v As Byte)
  Dim dlig&, lig&: Application.ScreenUpdating = 0
  Rows.Hidden = 0: If v = 2 Then Exit Sub
  dlig = Cells(Rows.Count, 1).End(xlUp).Row
  For lig = 1 To dlig
    Rows(lig).Hidden = Cells(lig, 1) = v
  Next lig
End Sub

Dim dlig&, lig& ; c'est l'abrégé de Dim dlig As Long, lig As Long

Application.ScreenUpdating = 0 ; c'est idem que Application.ScreenUpdating = False :

l'écran n'est plus mis à jour ➯ ça va plus vite ; est mis implicitement à True juste avant End Sub

Rows.Hidden = 0 ; c'est idem que Rows.Hidden = Falsetoutes les lignes sont affichées

* note que ce début est toujours effectué, quelle que soit la valeur du paramètre v

* note aussi que pour ShowAll(), on vient de faire ce qu'il faut, d'où sortie de sub :

If v = 2 Then Exit Sub

ainsi, c'est terminé pour le cas v = 2 ; la suite de la sub concerne uniquement les 2 autres cas 1 et 0


n'oublie pas qu'à ce stade, même pour 1 et 0, toutes les lignes sont affichées

dlig = Cells(Rows.Count, 1).End(xlUp).Row : dernière ligne utilisée, selon la colonne A

(attention : ce calcul aurait pu être faussé si y'avait eu des lignes cachées en fin de colonne)

For lig = 1 To dlig .. Next lig : boucle pour toutes les lignes 1 à dlig

pour chaque ligne, faire cette seule instruction :

Rows(lig).Hidden = Cells(lig, 1) = v ; l'état Hidden (= caché) de la ligne lig

est mis à True ou False selon le résultat du test Cells(lig, 1) = v :

* pour Show0() : v = 1 ➯ état vrai (donc caché) si Cells(lig, 1) = 1

état faux (donc visible) si y'a 0 en colonne A

* pour Show1() : v = 0 ➯ état vrai (donc caché) si Cells(lig, 1) = 0

état faux (donc visible) si y'a 1 en colonne A

dhany

Merci pour tes explications !!

Et si je veux changer le 1 en une autre valeur comment puis je faire ?! Prendra t’il même des lettres ou des combinaisons ?

Désolé ce temps de réponse ...

Bien à toi,

Florian

tu a écrit :

changer le 1 en une autre valeur

dans ce fichier, c'est avec des 0 et des 2 :

le 1 a été remplacé par 2 ; 0 : inchangé

dhany

tu a écrit :

Prendra-t-il même des lettres ?

dans ce fichier, c'est avec des "A" et des "B" :


pour des combinaisons, faudrait qu'tu indiques la liste complète des valeurs qui peuvent être en colonne A.

note que sans ça, ta demande est trop vague pour pouvoir être réalisée ! envoie un fichier exemple.

dhany

Rechercher des sujets similaires à "disparaitre ligne valeur colonne"