Macro afficher et cacher VBA

Fermé
olivierporcinet Messages postés 13 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 25 mai 2023 - Modifié le 2 oct. 2017 à 14:07
fabien25000 Messages postés 673 Date d'inscription mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 - 2 oct. 2017 à 15:20
Bonjour,


J'ai crée une macro pour afficher uniquement les lignes dont une ou plusieurs cellules sont colorées et une autre macro pour tout ré afficher.

Il y a des MFC.

Mes colonnes vont de A à R et ma première MFC commence à la colonne E

MFC en colonnes E, H, K, N et R (avec calcul de dates dans ces colonnes)


j'ai créé 2 boutons (Afficher et masquer)

Problème..... lorsque je clic sur les boutons pour masquer, ça ne fonctionne pas.

Quelqu'un peut m'aider ?

Merci.

Bonne journée


Sub Masquer()
Dim MasquerLigneVide, rgPlage As Range, rgDer As Range, tablo
Dim i&, j&, Coul&, pasCoul&, MFC1, Texte$

pasCoul = 18 * RGB(255, 255, 255)


MasquerLigneVide = MsgBox("Voulez vous aussi masquer les lignes vides ?", vbQuestion + vbYesNo + vbDefaultButton1) = vbYes
Application.ScreenUpdating = False


With Worksheets("CDI")
.Activate: afficher
Set rgDer = .Columns("a:r").Find(What:="*", After:=.Range("a1"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
.Range(.Cells(rgDer.Row, 1), .Cells(.Rows.Count, 18)).Borders.LineStyle = xlLineStyleNone
.Range(.Cells(1, 1), .Cells(.Rows.Count, 18)).Borders.LineStyle = xlLineStyleNone
.Range("a1:r" & rgDer.Row).Borders.LineStyle = xlContinuous
tablo = .Range("a1:r" & rgDer.Row)

For i = rgDer.Row To 1 Step -1
If MasquerLigneVide Then
Texte = ""
For j = 1 To 18: Texte = Texte & IIf(IsError(tablo(i, j)), "z", tablo(i, j)): Next j
If Texte = "" Then .Cells(i, j).EntireRow.Hidden = True
End If
If Not (MasquerLigneVide And Texte = "") Then
Coul = 0
For j = 1 To 18: Coul = Coul + .Cells(i, j).Interior.Color: Next j
MFC1 = tablo(i, 5) <> "" And tablo(i, 18) = "" And tablo(i, 5) < Date
If Coul <> pasCoul Or MFC1 Then .Cells(i, j).EntireRow.Hidden = False Else .Cells(i, j).EntireRow.Hidden = True
End If
Next i
End With

End Sub
A voir également:

1 réponse

fabien25000 Messages postés 673 Date d'inscription mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
2 oct. 2017 à 15:20
Bonjour,
J'ai regardé en diagonale parce que sans la mise en forme ça me fait mal aux yeux, donc je dis peut être une bétise mais je ne vois pas où tu rétablis

Application.ScreenUpdating = True

0