Masquer des lignes avec formules

syllage

XLDnaute Nouveau
Bonjour à toutes et à tous,

Voici mon problème : (je débute en vba)

Dans mon projet, je cherche à masquer/afficher à l'aide d'un bouton les lignes dont la formule en colonne A se reporte à une cellule vide (que je remplie mano en cas de besoin) dans une autre feuille du classeur.

Je suis arrivé pour le moment au code suivant :

Private Sub CommandButton2_Click()
ActiveSheet.Unprotect
CommandButton2.Caption = IIf(CommandButton2.Caption = "Masquer", "Afficher", "Masquer")
Range("A8:A105").EntireRow.Hidden = IIf(CommandButton2.Caption = "Masquer", False, True)
End Sub

mais ceci me masque toutes les lignes nommé par Range.

Si je met ce code :

Private Sub CommandButton2_Click()
ActiveSheet.Unprotect
CommandButton2.Caption = IIf(CommandButton2.Caption = "Masquer", "Afficher", "Masquer")
Range("A8:A105").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = IIf(CommandButton2.Caption = "Masquer", False, True)
End Sub

il me masque seulement les quelques lignes (A98:A105) qui n'ont pas de formules.

Merci pour votre aide.
 

syllage

XLDnaute Nouveau
Re : Masquer des lignes avec formules

phlaurent55,

Si ce que vous voulez me dire es de joindre un fichier pour mieux visualisé mon problème, il suffisait de me le demander mais il faut tout d'abord que je recrée un classeur car le miens es beaucoup trop volumineux et comporte 44 feuilles.

Mais je me met au travail et je le joint dès que possible.

Si ce n'est pas ce que vous vouliez me dire et bien dite le moi clairement.

cdt
 

syllage

XLDnaute Nouveau
Re : Masquer des lignes avec formules

Je reprend tout depuis le début :

Bonjour à toutes et à tous,

Voici mon problème : (je débute en vba)

Dans mon projet, je cherche à masquer/afficher à l'aide d'un bouton les lignes dont la formule en colonne A de la feuille "annuaire" se reporte à une cellule vide (que je remplie à la main en cas de besoin) dans la feuille "chantiers" de ce même classeur.

Je suis arrivé pour le moment aux codes suivant :

Private Sub CommandButton1_Click()
CommandButton1.Caption = IIf(CommandButton1.Caption = "Masquer", "Afficher", "Masquer")
Range("A3:A20").EntireRow.Hidden = IIf(CommandButton1.Caption = "Masquer", False, True)
End Sub

mais ceci me masque toutes les lignes nommé par Range.

Si je met ce code :

Private Sub CommandButton1_Click()
CommandButton1.Caption = IIf(CommandButton1.Caption = "Masquer", "Afficher", "Masquer")
Range("A8:A105").SpecialCells(xlCellTypeBlanks).En tireRow.Hidden = IIf(CommandButton1.Caption = "Masquer", False, True)
End Sub

il me masque seulement les quelques lignes qui n'ont pas de formules (s'il y en as).

Je vous joint un fichier en pièce jointe pour appuyé ma demande, je tiens à précisé que ce classeur n'est pas celui sur lequel je travail mais juste un exemple.

Merci d'avance pour votre aide.
 

Pièces jointes

  • chantier.zip
    19.9 KB · Affichages: 45
  • chantier.zip
    19.9 KB · Affichages: 49
  • chantier.zip
    19.9 KB · Affichages: 42

syllage

XLDnaute Nouveau
Re : Masquer des lignes avec formules

Bonjour,

Merci à celles et ceux qui ce seront penché sur mon soucis mais je viens de trouvé la solution que je copie ci-dessous pour ceux qui aurait besoin :

Private Sub CommandButton2_Click()
CommandButton2.Caption = IIf(CommandButton2.Caption = "Masquer", "Afficher", "Masquer")
Range("A4:A21").Select
Selection.EntireRow.Hidden = IIf(CommandButton2.Caption = "Masquer", False, True)
Range("A1").Select
End Sub

Private Sub masque()
For Each c In Range("A4", "A21")
For i = 0 To Range("A1").Column
If c.Offset(0, i) <> 0 Then
n = 1
End If
Next
If n <> 1 Then
c.EntireRow.Hidden = True
End If
n = 0
Next
End Sub

Pour rappel à celles et ceux qui aurait besoin : cette commande fonctionne avec un bouton de commande, concernant les plages d'utilisation il suffi de les remplacer par les votres.

Bon courage et bonne continuation.
 

syllage

XLDnaute Nouveau
Re : Masquer des lignes avec formules

re,

Cela fonctionne dans mon classeur original mais il a fallu que je change "" en " " sinon cela n'était pas pris en compte.

Donc le code es le suivant :

Private Sub ToggleButton1_Click()
Dim x As Range

With ToggleButton1
For Each x In Range("a3:a20")
If x = " " Then Rows(x.Row).Hidden = .Value
Next x
.Caption = IIf(.Caption = "Afficher", "Masquer", "Afficher")
End With
End Sub

Merci encore une foir Aurore C de m'avoir aider, bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 134
Membres
104 042
dernier inscrit
tropsy89