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.
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.