IF + Macro + cacher des lignes

  • Initiateur de la discussion Initiateur de la discussion cchaillou
  • 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 !

C

cchaillou

Guest
Bonjour,

Je suis débutante en VBA et je cherche comment réaliser ceci :

SI cases de [A1 à A250] différent de "TEXTE",
Alors Cacher cette ligne (Selection.EntireRow.Hidden = True?)

En fait je souhaite simplement cacher les lignes d'un tableau lorsque qu'elles ne m'intéressent pas.
J'ai vu quelques discussions sur ces sujets mais j'ai du mal à :
Selectionner plusieurs lignes + créer la condition adéquate + appeler la macro pour cacher les lignes.

Merci d'avance de l'aide que vous pourrez m'apporter,
Bien Cordialement,
Clémence
 
Re : IF + Macro + cacher des lignes

Bonjour Clémence et bienvenue à toi 🙂

Profite sans vergogne de l'opportunité qui t'est offerte de déposer un petit fichier exemple, pour illustrer ta demande. Ça permettra de bien comprendre ce que tu souhaites et de tester la proposition avant de la soumettre.

Ledit fichier ne devra contenir aucune donnée confidentielle et peut se réduire à une cinquantaine de lignes ... pourvu que le texte à y rechercher figure parmi les données.

Ceci dit, ce que je crois comprendre de ton besoin ressemble tout de même furieusement à un filtre, non??
 
Re : IF + Macro + cacher des lignes

Bonjour Modeste,

Voici un excel très simplifié. Dans cette exemple, je souhaiterais que seuls les systèmes "Bancs de charge" apparaissent et que les autres lignes se cachent "d'elles-même" lorsque que j'appuie sur le bouton Tri.
Cela correspond effectivement plus ou moins à un filtre sauf que je n'arrive pas à utiliser les filtres pour qu'ils répondent à ma demande 🙁
Le but est que ce fichier puisse rester interactif et que des personnes autres que moi puissent ajouter des nouvelles lignes et que les systèmes puissent être rapidement visibles seuls sans devoir faire attention à l'ordre de rajout des données.

Etant donné que le tableau est long pour de vrai, je souhaiterai vraiment faire apparaitre seules les données intéressants l'utilisateur.

Merci beaucoup de vous pencher sur mon problème !!
Bien Cordialement,
Clémence
 

Pièces jointes

Re : IF + Macro + cacher des lignes

Re-bonjour,

J'évoquais les filtres, mais dans ton fichier, le code concerne les tris. Si tu veux n'afficher que certains enregistrements en en masquant d'autres, c'est bien de filtres qu'il s'agira (mais ton tri est peut-être là pour une autre raison?).

Quoi qu'il en soit, dans l'exemple que tu as déposé, ni les tris, ni les filtres ne risquent de fonctionner correctement, pas plus qu'une série d'autres fonctionnalités comme les sous-totaux, les tableaux croisés dynamiques, la suppression des doublons ou que sais-je encore. En effet, une des règles d'or qu'il faut prendre en considération quand on travaille sur une liste de données (c'est ton cas, ici) est qu'il ne peut y avoir, entre les enregistrements, de lignes entières restées vides (pas plus que de colonnes, d'ailleurs!). Certaines cellules peuvent demeurer vides, mais pas toutes celles d'une même ligne.

La première question est donc: "tiens-tu comme à la prunelle de tes yeux à ce que les lignes 8, 10, 15, 21, etc. de ton exemple (ou de ton fichier réel) restent vides?" La seule chose que je puis dire, c'est qu'en les supprimant, tu te simplifieras grandement la vie pour toute une série de manipulations.

Tu noteras cependant que je ne dis pas que ta demande est irréalisable! Simplement tu vas devoir fabriquer artificiellement quelque chose qui pourrait se faire "naturellement" en Excel.
Si tu y tiens donc, teste ce bout de code:
VB:
Sub filtreArtificiel()
With Sheets("Feuil1")
    For lig = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If .Cells(lig, 1).Value = "Banc de charge" Then .Rows(lig).Hidden = True
    Next lig
End With
End Sub

Cette proposition n'est qu'une base. Il conviendra notamment de s'assurer que Banc de charge n'est pas écrit de manière différente (prise en compte de la casse, espace qui "traîne" derrière le dernier mot, etc). Ne pas oublier non plus de réafficher les lignes masquées, avant certaines manipulations!
 
Re : IF + Macro + cacher des lignes

Re Bonjour,
Décidément, merci beaucoup pour tout cela ! Etant donné que je ne tiens Absolument pas du tout à avoir ces lignes blanches et que mes lointains souvenirs de VBA m'encourage fortement à y renoncer, je ne m'enteterai pas cette direction 🙂
Du coup, votre proposition fonctionne à merveille, je me suis juste permis d'échanger le = par un <> afin d'obtenir l'effet inverse et garder les bancs de charge affichés et les autres voilés. C'est donc super !
Il me reste donc une question :
J'aimerais pouvoir réinitialiser le fichier: quel en serait le code, et surtout, est-ce possible si le fichier est fermé en ayant été enregistré avant la réinitialisation de récuperer toutes les données (j'ai l'impression que cette question est assez bête mais je ne suis pas sûre).
Comme ça, je pourrais aussi rajouter le code de l'initialisation à chaque début de macro pour éviter de me retrouver avec 100% des lignes cachées !
Mille mercis !
Clémence
 

Pièces jointes

Re : IF + Macro + cacher des lignes

Re²,

Pour tout réafficher (après enregistrement ou non) et si on ne doit pas se tracasser de savoir si certaines lignes doivent rester masquées, le plus simple serait (à mon avis):
VB:
Sub afficheTout()
Sheets("Feuil1").Rows.Hidden = False
End Sub
L'exécuter sans qu'aucune ligne ne soit masquée ne provoque pas d'erreur non plus! 😀

PS: il serait intéressant, puisque j'ai oublié de le mentionner dans le code proposé tout à l'heure, d'ajouter en début de code: "application.ScreenUpdating=False" et "d'inverser la manoeuvre" en fin de procédure avec "application.ScreenUpdating=True", pour empêcher le rafraîchissement de l'écran pendant qu'on parcourt la boucle.
 
Dernière édition:
Re : IF + Macro + cacher des lignes

Tout marche hyper super méga bien ! La journée commence bien !😉😉😉
Merci beaucoup pour toute cette aide !!!
Très bonne journée à vous,
Bien Cordialement,
Clémence
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
8
Affichages
2 K
StanislasC
S
V
Réponses
5
Affichages
1 K
Vince78740
V
M
Réponses
3
Affichages
2 K
M
B
Réponses
5
Affichages
982
Benjy51190
B
Y
Réponses
11
Affichages
3 K
Y
B
Réponses
4
Affichages
3 K
Bocepod
B
A
Réponses
4
Affichages
3 K
Arnaudenbesoindaide
A
Retour