Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Afficher masquer les lignes à zéro

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Amilo

XLDnaute Accro
Bonjour le Forum,

j'ai un ptit souci avec le code VBA dans mon fichier ci-joint :

Mon tableau présente des plages de données non adjacentes et je souhaiterais masquer les valeurs à zéro de la colonne B.

Le code VBA utilisé ici ne prend que la première plage de données.

Est-il possible de créer une macro masquant la totalité des valeurs à zéro sauf la ligne correspond à la "TVA".

Voire même une macro pour masquer les valeurs à zéro et les cellules vides de la colonne B jusqu'à la ligne L-2 de "Total HT" !!!!

Merci d'avance pour votre aide.

Cordialement
 

Pièces jointes

Dernière édition:
Re : Afficher masquer les lignes à zéro

Bonsoir Amilo,

Le code ci-dessous devrait faire ton bonheur! Quoique! Un coup tu parles de ligne, puis de cellules! Je suis un peu perdu.

Si j'ai faux dans mon interprétation, et pour tes prochaines questions : peux-tu dans ton fichier mettre l'exemple "avant" et "après" (le résultat attendu) ?

Code:
Sub Masque()

   For ligne = 3 To 21
       If Range("A" & ligne) = "" Then Row(ligne).EntireRow.Hidden = True
   Next ligne

End Sub

Sub Affiche()

    Rows.EntireRow.Hidden = False

End Sub

A te lire

Bonne fin de soirée
 
Dernière édition:
Re : Afficher masquer les lignes à zéro

Remplacer dans mon code :
Range("A" & ligne) = ""

par :
Range("B" & ligne) = 0

A+

Bonsoir Excel-lent,

merci pour ta proposition et désolé pour mon explication un peu maladroite, je souhaite en effet masquer et afficher toutes les lignes de mon tableau dont la valeur de la colonne B est égal à "0" ou "vide" !!!

Je souhaite utiliser le "Tooglebutton", vous pouvez le tester sur mon fichier qui malheusement masque les 2 zéros de la première plage et pas les autres plages car le filtre ne prend pas l'ensemble du tableau !

Merci d'avance, j'espère avoir été plus clair.

Slts
 
Re : Afficher masquer les lignes à zéro


Re-bonsoir Excel-lent,

j'ai utilisé votre macro sur mon fichier et ça fonctionne, effectivement il est plus facile de traiter sans les filtres. J'ai rajouté un petit "s" à Row(s) et ça marche. A vrai dire je suis plutôt débutant en VBA et j'ai été un peu dérouté au vu d'une macro différente de celle que j'avais utilisée.
Ca rentre tout doucement...

Je joins le nouveau fichier adapté à votre macro.

Merci encore pour votre soutien.

Bonne soirée à tous
 

Pièces jointes

Re : Afficher masquer les lignes à zéro

Bonsoir Amilo,

Très bonne adaptation du code fournit!

Amilo à dit:
J'ai rajouté un petit "s" à Row(s)
Bravo à toi! En effet, j'avais une erreur et l'avais pas vu!
(j'avais pas testé mon code sur ton fichier - ça m'apprendra!!!)

Remarque : comme tu as pu le voir, pour la zone occupé par tes informations j'ai utilisé :
For ligne = 3 To 21

J'ai mis 21 car ta zone s'arrête à la ligne 21, mais si plus tard ta zone va jusqu'à la ligne 35, tu seras obligé d'aller dans le code pour le modifier manuellement!!!!

Ce qui tu en conviendras n'est pas très pratique et source d'erreur!

Tout en sachant que For ligne = 2 To 21 serait plus juste!

Mais si tu le souhaite tu peux automatiser cela, pour éviter de changer ton code manuellement.

Mais pour cela, il aurait fallu que tu nous donne plus d'informations! Voici un exemple concret :

Si les dernières lignes à ne pas prendre en compte sont toujours de taille identique :
... "Total Ht
... "TVA
Avant avant dernière ligne :" Total TTC
Avant dernière ligne : " (ligne vide)
Dernière ligne : "Date

Soit 5 lignes! A ne pas toucher! Quelque soit le nombre de ligne au dessus.

Donc pour automatiser cela tu demande à Excel de chercher automatiquement la dernière ligne occupé (celle contenant le mot "Date") :
[A65536].End(xlUp).Row -> "27" dans ton fichier mis sur le forum

Tu soustrait 5 pour trouver la ligne immédiatement supérieur à la ligne contenant "Total HT"

Ce qui te donne le code suivant :
[A65536].End(xlUp).Row - 5 -> "27 - 5" -> 22 dans ton fichier mis sur le forum

Ce qui donnerais pour ton code :
For ligne = 2 To [A65536].End(xlUp).Row - 5

A adapter selon ton fichier d'origine et tes contraintes.

Si tu n'arrives pas à adapter l'astuce sur ton code, décrit nous plus en détail ta feuille et comment le nombre de ligne augmente, diminue, ... bref tout et nous ferons le trie pour toi 😉

Bonne fin de soirée
 
Dernière édition:
Re : Afficher masquer les lignes à zéro


Bonjour le Forum, bonjour Excel-lent,

c'est exactement la question que je m'étais posée pour "comment créer une plage dynamique" mais vous l'avez trés bien anticipé.

De plus ce code convient parfaitement car effectivement la plage "Total HT" jusqu'à "Date" termine toujours le tableau de la même manière. J'aurai donc juste à tester ce nouveau code.

Désolé pour ce retour un peu tardif, mais j'ai un ptit problème de connecteur sur mon portable depuis 2 jours. L'alimentation ne se fait pas en raison d'une micro fissure du connecteur à l'intérieur.
La soudure effectuée il y a 4 mois a laché en raison certainement d'une sur chauffe. Je suis obligé actuellement de maintenir d'une main le cable d'alimentation pour assurer le courant. Pas pratique et fatiguant !!!

Il faudra que je fasse réparer à nouveau le connecteur !!

Mille merci en tout cas pour cette amélioration et ces bonnes explications.

Bonne journée à tous
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
564
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…