Afficher/Masquer lignes via VBA

Katou1604

XLDnaute Nouveau
Bonjour à toutes et à tous.

Je reviens vers vous aujourd'hui car je n'arrive pas à adapter les codes ci-dessous aux lignes.

Cela fonctionne superbemment bien sur mes colonnes : je sélectionne dans une ListBox les colonnes à afficher pour ensuite n'imprimer que celles-ci.

Je souhaiterais faire la même chose avec mes lignes.... mais là, gros soucis !

Comment adapter mes codes pour que cela fonctionne également avec mes lignes ? Je souhaiterais pouvoir sélectionner les lignes (plusieurs en même temps) et ne voir apparaitre que celles-ci ?

Ci-dessous les codes qui fonctionnent pour les colonnes :


Dans un module

Sub Macro1()
Dim dc As Integer 'décalre la variable dc (Dernière Colonne)
Application.ScreenUpdating = False 'masque les changements à l'écran
With Sheets("TABLEAU DE BORD") 'prend en compte l'onglet "TABLEAU DE BORD"
.Cells.EntireColumn.Hidden = False 'affiche toutes les colonnes
dc = Cells(1, Application.Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée dc de la ligne 2
.Range(Cells(1, 1), Cells(1, dc)).EntireColumn.Hidden = True 'masque les colonnes éditées
End With 'fin de la prise en compte de l'onglet "TABLEAU DE BORD"
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub


Dans mon Userform

Private Sub ListBox1_Click()
For I = 1 To ListCount
Range("A" & 1 + I).List (I)
Next I
End Sub


Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
'Récupération données des titres de colonnes'
Dim Cell As Range
'propriétés de la listbox "Liste1" : ColumnCount = 2 , ColumnsWhitdths = ,0Pts, ColumnsBound=1
With Liste1
For Each Cell In Rows(1).SpecialCells(xlCellTypeConstants, 3)
.AddItem Cell.Text '1ère colonne
.List(.ListCount - 1, 1) = Cell.Column '2ème colonne
Next Cell
.ListIndex = 0
End With
End Sub



Private Sub CommandButton3_Click() 'bouton "cache les colonnes sélectionnées"
With Me.Liste1 'prend en compte la listbox "Liste1"
For x = 0 To .ListCount - 1 'boucle sur tous les éléments
'si l'élément est sélectionné sa colonne est affichée
If .Selected(x) = True Then Sheets("TABLEAU DE BORD").Columns(CInt(.List(x, 1))).Hidden = False
Next x 'prochain élément de la boucle
End With 'fi de la prise en compte de le listbox "Liste1"
Sheets("TABLEAU DE BORD").Range("A1").Select
End Sub



Un très grand merci pour votre aide.

Excellente journée.

Katou.
 

Bebere

XLDnaute Barbatruc
Re : Afficher/Masquer lignes via VBA

bonjour Katou
bienvenue
sans fichier,je doute d'une réponse

ce code n'est pas bon
Code:
Private Sub ListBox1_Click()
For I = 1 To ListCount
Range("A" & 1 + I).List (I)
Next I
End Sub

Code:
Private Sub ListBox1_Click()
For I = 0 To ListBox1.ListCount-1
Range("A" & 1 + I)= ListBox1.List (I)'il faut changer 1
Next I
End Sub

un exemple qui cache les lignes dont A est vide

Code:
Public Sub CacherLigne()
    Dim i As Long
    i = 8
    With Feuil4    'buvette
        .Unprotect Password:="stade2013"
        Do While i < 64
            If .Cells(i, 1).Value = "" Then
                .Cells(i, 1).EntireRow.Hidden = True
            End If
            i = i + 1
        Loop
        .Protect Password:="stade2013"
    End With
End Sub
à initialize mettre la listbox en multiselect et mettre l'index ligne dans une colonne de la listbox
 

Katou1604

XLDnaute Nouveau
Re : Afficher/Masquer lignes via VBA

Bonsoir.

Merci beaucoup pour la correction.

En ce qui concerne les lignes à afficher ou à masquer :

A partir d'une listbox, je souhaiterai sélectionner / déselectionner des lignes ; celles-ci devront s'afficher ou se désafficher de ma feuil1 excel.... comme je le fais pour mes colonnes.

Une idée ?

Excellente soirée.

Katou.
 

Bebere

XLDnaute Barbatruc
Re : Afficher/Masquer lignes via VBA

bonjour Katou
le fichier c'est pour éviter que le répondant doive tout faire

voilà une possibilité
Code:
Private Sub CommandButton1_Click() 'cache ligne
Dim l As Long
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
l = Me.ListBox1.List(i, 1)
Feuil1.Range("A" & l).EntireRow.Hidden = True'à adapter

End If
Next i
End Sub

Private Sub CommandButton2_Click() 'montre ligne
    Feuil1.Rows("10:400").EntireRow.Hidden = False 'à adapter
End Sub

Private Sub UserForm_Initialize()
Dim Cel As Range

With Me.ListBox1
.MultiSelect = fmMultiSelectMulti
.ColumnCount = 2
.ColumnWidths = "70;0" 'la 2ème colonne index ligne
End With
For Each Cel In Feuil1.Range("B10:B392") 'à adapter
Me.ListBox1.AddItem Cel.Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cel.Row
Next Cel
 

Discussions similaires

Réponses
4
Affichages
165
Réponses
1
Affichages
122

Statistiques des forums

Discussions
311 740
Messages
2 082 049
Membres
101 882
dernier inscrit
XaK_