Titre du sujet : Re: Afficher/Masquer Lignes et colonnes par myDearFriend! le 02/12/2009 21:12:01
Bonsoir lours, le Forum,
En pièce jointe, ton fichier modifié en conséquence.
J'ai tout d'abord rétabli la propriété BoundColumn du contrôle ListBoxA sur la valeur 2 (et non 3 comme tu l'avais modifiée). Pour info, la propriété Value du contrôle tire sa valeur dans la colonne dont le numéro est indiqué en BoundColumn. En mettant 3, tu fausses le retour de valeur attendu dans le code (= plantage assuré).
Ensuite, j'ai ajouté 2 lignes dans le code ci-dessous (j'ai repéré les lignes ajoutées par un commentaire "<<< AJOUT LIGNE >>>") :
Option Explicit
' Décembre 2009 : myDearFriend! - www.mdf-xlpages.com
Private Sub UserForm_Initialize()
Dim cell As Range
Dim MyArray(1, 6)
Dim i As Byte
'Affiche toutes les lignes
Rows("6:38").EntireRow.Hidden = False
'Affiche toutes les colonnes
Range("B:M").EntireColumn.Hidden = False
' Pour les colonnes noms
With ListBoxA
For Each cell In Rows(4).SpecialCells(xlCellTypeConstants, 3)
.AddItem cell.Text '1ère col : les prénoms
.List(.ListCount - 1, 1) = cell.Column '2ème col : les nos de colonnes correspondantes
.List(.ListCount - 1, 2) = "Affiché" '<<< AJOUT LIGNE >>> 3ème col : le statut masqué/affiché
Next cell
.ListIndex = 0
End With
'Pour les mois
ListBoxM.ListIndex = 0
End Sub
Private Sub ListBoxA_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'masque ou affiche la colonne cible et la colonne à sa droite
With Columns(Val(ListBoxA.Value))
.Hidden = Not .Hidden
.Offset(0, 1).Hidden = .Hidden
ListBoxA.List(ListBoxA.ListIndex, 2) = IIf(.Hidden, "Masqué", "Affiché") '<<< AJOUT LIGNE >>>
End With
ActiveWindow.ScrollColumn = 1
End Sub
Private Sub Cmdretour_Click()
Unload Me
End Sub
Private Sub CmdM1_Click()
Dim C As Range
'Trouve la cellule correspondant au mois sélectionné
Set C = ActiveSheet.Range("A6:A39").Find(ListBoxM.Text, LookIn:=xlFormulas)
If C Is Nothing Then Exit Sub
'Affiche toutes les lignes
Rows("6:38").EntireRow.Hidden = False
'Masque les lignes précédant le mois choisi
If C.Row > 8 Then
Range(Cells(6, 1), Cells(C.Row - 1, 1)).EntireRow.Hidden = True
End If
End Sub
Cordialement,
|