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

Afficher/Masquer une ligne sous DEUX conditions

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

kevkev051

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur ce forum, et novice en tout ce qui est macro et VBA.
Comme l'intitulé de mon message l'indique, j'aimerais avoir une macro, à laquelle je pourrais associer un bouton, qui me permettrait de masquer des lignes sous DEUX conditions et sur plusieurs worksheets en même temps, juste en appuyant sur le bouton. Je mets "deux" en majuscule pour vous rassurer, j'ai bien arpenté votre site et bien d'autres d'ailleurs avant de vous écrire et à chaque fois on ne me propose qu'une seule condition. .

J'ai mis un exemple de fichier en pièces jointes avec la macro que j'ai faite et qui ne marche pas . Mon souhait donc serait que les comptes qui n'auraient pas de chiffres de renseignées soient masquées. Ceci rentre dans le cadre de mon stage et vous écrire en ce moment relève de ma dernière option. J'aimerais bien partir en week-end en faisant bonne impression à mon tuteur de stage. Je ne manquerai pas de signaler que c'est grâce à vous 🙂.

En espérant avoir des nouvelles incessamment sous peu, merci d'avance pour votre aide

Kevkev051
 

Pièces jointes

Re : Afficher/Masquer une ligne sous DEUX conditions

Bonjour kevkev051,

Peut être comme ça :
Code:
Private Sub Masquer_Lignes_Vides()
'
' Masquer_Lignes_Vides Macro
' Permet de masquer les postes qui n'ont ressorti aucune valeur.
Dim i As Integer, j As Integer, Debut As Integer

For j = 1 To ActiveWorkbook.Sheets.Count
'première ligne non vide après compte
Debut = ActiveSheet.UsedRange.Row + 2

For i = Debut To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 3) = "" And Cells(i, 4) = "" Then Rows(i).Hidden = True
Next i

Next j
End Sub
A+ Jack2
 
Dernière édition:
Re : Afficher/Masquer une ligne sous DEUX conditions

Merci pour ta réponse Jack2, ça marche bien sur le fichier excel que j'ai posté, mais quand je l'essaye sur l'autre il marche pas!! j'ai trouvé ceci aussi et je ne comprends pas tout pour le coup (dlg? ("A" & Rows.Count? WorksheetFunction.Count(Range("B" & i & ":K" & i)) = 0?)
 
Re : Afficher/Masquer une ligne sous DEUX conditions

Bonsoir à tous

Une autre solution (qui semble plus rapide sur ton dernier fichier exemple)
Code:
Sub Masquer_videsBis()
Dim dl&: dl = Cells(Rows.Count, 1).End(3)(-2).Row
Application.ScreenUpdating = 0
With Range(Cells(4, "L"), Cells(dl, "L"))
    .FormulaR1C1 = "=IF(COUNTA(RC[-10]:RC[-1])=0,""X"",0)"
Application.Calculation = -4135
    .Value = .Value
    .SpecialCells(xlCellTypeConstants, 2).EntireRow.Hidden = True
End With
Columns(12) = Empty
Application.Calculation = -4105
Application.ScreenUpdating = -1
End Sub
PS: Si tu as des questions sur le code, n'hésites pas 😉
 
Re : Afficher/Masquer une ligne sous DEUX conditions

Bonjour le fil, le Forum,

@kevkev051, c'est normal que ça ne marche pas dans le deuxième exemple. D'après le premier j'avais compris qu'il fallait tester le manque d'information à partir de la colonne C.

dlg comme la formule Cells(Rows.Count, 1).End(xlUp).Row servent à déterminer la dernière ligne non vide (fin de ton tableau) et debut la première ligne non vide + la ligne de titre et la suivante qui est vide. WorksheetFunction.Count(Range("B" & i & ":K" & i)) = 0 permet de tester si pour une ligne donnée le nombre de cellules qui contiennent un nombre (si aucune : la fonction renvoi 0)

Staple utilise une formule proche pour déterminer le nombre de ligne à traiter. Le (-2) sert à enlever les 3 lignes qui ne contiennent pas de données article ou de nombre. Le 3 de End(3) sans le (-2) donne la dernière ligne non vide (les autres nombres semblent donner le total de ligne de la feuille (là, il faut que je cherche pourquoi).

Le code de Staple évite les boucles. Il est donc plus rapide. Par contre, je ne comprends pas la ligne .Value = .Value et je suppose .SpecialCells(xlCellTypeConstants, 2) sert à détecter les croix (Staple d'exliquera mieux son code que moi).
Je vais essayer de comprendre ces deux lignes.

A+ Jack2
 
Re : Afficher/Masquer une ligne sous DEUX conditions

Bonjour à tous

Jack2
•1) le .Value=.Value 'transforme en valeurs seules sans passer par PasteSpecial xlValues (Collage spécial/Valeurs)
•2) .SpecialCells(xlCellTypeConstants, 2) sélectionne les cellules avec Constantes, Texte
(donc les cellules avec un X
Il reste plus ensuite qu'à masquer ces lignes sélectionnées avec EntireRow.Hidden=True
 
Re : Afficher/Masquer une ligne sous DEUX conditions

Bonsoir le fil,

Merci Staple, ça me permet de comprendre ton code. Je vais essayer d'utiliser le .Value=.Value.

Merci encore et bonne soirée.

A+ Jack2
 
Re : Afficher/Masquer une ligne sous DEUX conditions

Bonjour à tous,

Je viens de me rendre compte que ma réponse n'avait pas été envoyée!! Le code avait bien marché, merci encore à vous tous.

Kevkev051
 
- 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
1
Affichages
185
Réponses
5
Affichages
244
Réponses
5
Affichages
145
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…