Masquer des lignes "non vides"

Bonjour,

J'ai créé un fichier Excel pour faciliter la tenue d'une billetterie pour un spectacle. Ce fichier va être utilisé par des bénévoles non spécialistes d'Excel, j'ai donc voulu simplifier et sécuriser la tâche.

Une toute petite macro permet de masquer la ligne saisie (pour éviter qu'elle soit effacée par erreur en réécrivant par dessus.). Elle fonctionne très bien.

Le problème survient quand je protège la feuille pour éviter que les formules soient supprimées par erreur : la macro ne fonctionne plus.

Je fais donc appel à tous les pros du forum pour une petite aide sur le fichier joint.

https://www.excel-pratique.com/~files/doc/Essai_billetterie.xls

Merci d'avance,

V_Elbie

Edit V_Elbie :

titre original du fil : Protection d'une feuille et fonctionnement macro

Modifié car évolution du sujet

Bonjour,

Remplace tes codes par ceux-ci

Sub Bouton16_QuandClic()
ActiveSheet.Protect UserInterfaceOnly:=True
ActiveCell.EntireRow.EntireRow.Hidden = True
End Sub
Sub AfficherTout()
Application.ScreenUpdating = False
With ActiveSheet
    .Protect UserInterfaceOnly:=True
    .Range(Range("B4"), Selection.End(xlDown)).EntireRow.Hidden = False
End With
End Sub

A te relire

Dan

1papi-projet.zip (14.79 Ko)

Bonjour,

Rien à voir avec la question !

La formule en colonne F peut être simplifiée : =(B4+D4)*3+E4*5

au format Standard;; pour ne pas afficher les 0.

Re,

J'ai trouvé la solution à ce premier problème, il suffit de cocher les cases permettant de modifier le format des lignes et des colonnes lors de l'activation de la protection.

Je rebondis donc sur un sujet annexe : j'aimerais que le bouton Masquer Ventes me permette de masquer plusieurs lignes en un seul clic (valider la saisie fonctionne ligne par ligne).

J'ai bien essayé ce code, mais ça masque tout...

Range("F4:F150").Select

    For Each Cell In Selection

     If ActiveCell.Value = "" Then
      Selection.EntireRow.Hidden = False
     Else
      Selection.EntireRow.Hidden = True
     End If

    Next Cell

Comment faire pour tester si la cellule contient un résultat ou pas ?

Merci de votre aide,

V_Elbie

Réponse à Dré,

Merci pour la simplification, mais ça n'empêche pas l'affichage des 0 quand même... à moins de décocher "Valeurs zéro" dans les options d'affichage... ce à quoi je n'avais pas pensé avant ta solution et ton message...

Cordialement,

V_Elbie

Réponse à Dan,

Merci pour le code, il se trouve que j'étais en train de répondre quand tu l'as posté. Je le conserve, il me sera utile pour plus tard...

Il me reste toujours à trouver comment masquer uniquement les lignes non vides... c'est sûrement simple pour un pro du VBA, mais je ne suis pas un pro du VBA, c'est bien pour ça que je sollicite l'aide du forum...

Cordialement,

V_Elbie

Re,

L'option "valeurs zéros" masquent les 0 dans tout le classeur.

Le format Standard;; (Standard + deux points-virgules) ne les masquent que pour les cellules concernées.

Toujours bon à savoir pour masquer les 0 sur une plage définie et non pour le solde de la feuille.

Merci Dré, ça c'est une super remarque que je note tout de suite dans mon fichier Astuces, car ça va me servir à coup sûr !

V_Elbie

Salut V_Elbie, Dré, Dan,

Je ne sais pas si j'ai bien compris ton problème. Essaye le code suivant qui masquera les lignes complètement saisies :

Sub masquerLigneComplète()
  Dim masquer As Boolean
  Dim cel As Range
  masquer = True
  For i = 1 To 26
    For Each cel In Range(Cells(i, 1), Cells(i, 9))
      If cel = "" Then masquer = False
    Next cel
    Rows(i).Hidden = masquer
    masquer = True
  Next i
End Sub

J'ai pris une plage de saisie A1:I26

Re V_Elbie,

salut Dré, Raja,

Raja, je ne vois pas pourquoi tu fais cela uniquement de la ligne 1 à 26.

V_Elbie, essaye ce code qui contrairement à Raja ne cache que si tu as une cellule vide dans la colonne F.

Sub test()
Dim cel As Range
Application.ScreenUpdating = False
For Each cel In Range("F4", Range("F65536").End(xlUp))
If cel.Value = "" Then
    cel.EntireRow.Hidden = False
Else: cel.EntireRow.Hidden = True
End If
Next
End Sub

Amicalement

Dan

Bonjour à tous...

Merci Dan, c'est génial, pile ce que je voulais...

Désolée Raja, je n'ai pas eu le temps de tester ta solution (déjeuner oblige), mais merci en tout cas de t'y être intéressé.

Grâce à vous, la billetterie va pouvoir fonctionner très correctement, et même sans ma présence !

Cordialement,

V_Elbie

Rechercher des sujets similaires à "masquer lignes vides"