Pages

04 juillet 2009

Masquage des lignes à quantité 0

Vous souhaitez – par voie de macro – masquer automatiquement toutes les lignes pour lesquelles une valeur de 0 a été saisie pour la quantité. Mais en revanche, vous ne souhaitez pas le faire pour les lignes dont la valeur dans la colonne « Quantité » n’a pas encore été saisie. Voici un exemple avec la feuille avant et après l’exécution de la macro :

Pour que cette macro fonctionne, il faut que vous ayez préalablement sélectionné le bloc B2:B17 des valeurs à contrôler. Voici la macro :

Sub Cache_lignes()
For Each Cell In Selection
If Cell = 0 And Not (IsEmpty(Cell)) Then Cell.EntireRow.Hidden = True
Next Cell
End Sub


Remarque –
On pourrait, bien évidemment, ajouter au début de la macro une commande demandant à l’utilisateur de sélectionner le bloc des valeurs à contrôler.

5 commentaires:

  1. cduigou10:25 AM

    Solution sans boucle...

    Sub Cache_Lignes()
    Selection.AutoFilter Field:=2, Criteria1:="<>0"
    End Sub

    RépondreSupprimer
  2. Certes, c'est plus court et ça fonctionne sans problème !

    Le seul inconvénient est que cela passe par l'activation du filtre automatique, ce qui n'est quand même pas la même chose qu'un masquage des lignes et qu'on peut donc ne pas souhaiter activer...

    RépondreSupprimer
  3. cduigou9:51 PM

    Sans filtrage alors... mais toujours sans boucle

    Sub cache_lignes()
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
    End Sub

    RépondreSupprimer
  4. Cette dernière macro atteint un objectif opposé au nôtre : elle masque les lignes où il n'y a rien (que nous voulions garder) et affiche celles où il y a un 0 (que nous voulions masquer)...

    RépondreSupprimer
  5. et pour réafficher la totalité des lignes, avez vous un autre petit code?

    RépondreSupprimer