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

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

  • Classeur5.xlsm
    16.4 KB · Affichages: 92
  • Classeur5.xlsm
    16.4 KB · Affichages: 116
  • Classeur5.xlsm
    16.4 KB · Affichages: 90

Jack2

XLDnaute Occasionnel
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:

kevkev051

XLDnaute Nouveau
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?)
 

kevkev051

XLDnaute Nouveau
Re : Afficher/Masquer une ligne sous DEUX conditions

La solution trouvée en question
 

Pièces jointes

  • solution.xls
    195 KB · Affichages: 83
  • solution.xls
    195 KB · Affichages: 108
  • solution.xls
    195 KB · Affichages: 113

Staple1600

XLDnaute Barbatruc
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
 

Jack2

XLDnaute Occasionnel
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
 

Staple1600

XLDnaute Barbatruc
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
 

Jack2

XLDnaute Occasionnel
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
 

kevkev051

XLDnaute Nouveau
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
 

Discussions similaires

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