Bonjour Sebyg,
Tu a écrit :
Maintenant dans ma plage "B4:B88" toute cellule vide doit être masquer.
Je te propose ce code VBA :
Option Explicit
Private Sub Masque_lig(Plg As Range)
Dim cellule As Range: Application.ScreenUpdating = 0
ActiveSheet.Unprotect "pwd"
For Each cellule In Plg
With cellule
.EntireRow.Hidden = (.Value = " " Or .Value = 0)
End With
Next cellule
ActiveSheet.Protect "pwd"
End Sub
Sub MaskPlg1()
Masque_lig [B4:B88]
End Sub
Sub MaskPlg2()
Masque_lig [B10:B69]
End Sub
Tu ne peux pas appeler la sub Masque_lig() car elle est devenue privée ; à la place, appelle MaskPlg1() ou MaskPlg2() qui appellent Masque_lig() pour faire le même travail, mais selon une plage différente : B4:B88 ou B10:B69.
Pour ce que tu as demandé ensuite, ce n'est pas bien clair !
Tu écris ton texte dans la cellule B4 : ok ; et ensuite ? tu veux lancer une autre macro pour afficher la ligne en dessous ? donc afficher la ligne 5 ; c'est ça ? et après avoir saisi un texte en B12, tu veux lancer la même macro pour afficher la ligne 13 ? si oui, essaye cette sub :
Sub ShowALig()
ActiveSheet.Unprotect "pwd"
Rows(ActiveCell.Row + 1).Hidden = False
ActiveSheet.Protect "pwd"
End Sub
dhany