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.
Solution sans boucle...
RépondreSupprimerSub Cache_Lignes()
Selection.AutoFilter Field:=2, Criteria1:="<>0"
End Sub
Certes, c'est plus court et ça fonctionne sans problème !
RépondreSupprimerLe 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...
Sans filtrage alors... mais toujours sans boucle
RépondreSupprimerSub cache_lignes()
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
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épondreSupprimeret pour réafficher la totalité des lignes, avez vous un autre petit code?
RépondreSupprimer