Salut à tous
En 'homage' à mDF qui ma fait découvrir le
Worksheet_BeforeDoubleClick ByVal Target....
Et pour ne pas oublier ma promesse à Jeny ("Pour démasquer...
on verra demain)...
voilà un petit amménagement du code qui tient compte du fait que les données peuvent être augmentées ou diminuées
Le classeur de mDF est toujours accessible et il suffit de remplacer son code par celui-ci :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
'Déclaration des variables
Dim L As Integer 'N° de la ligne
Dim N As Integer 'Nombre de données à masquer ou démasquer
With Target 'avec la cellule cible [Target] sur laquelle je DoubleClick
'=============================
'==LES MSGBOX sont juste là pour vérifier comment les variables sont stockées
'=============================
L = .Row 'L = le numéro de la ligne [.Row]
MsgBox L & "= le N° de la ligne sur leque se trouve le +/-" 'vérif Ok
N = Cells(L, 2).Value 'N = le nombre dans ligne L et la colonne 2 (B)
MsgBox N & "= le nombre situé à droite du +/-" 'vérif Ok
'SI [TARGET] = "-"
If .Value = "-" Then
'MISE A JOUR du nombre N d'éléments
Cells(L + 1, 4).Select 'Elle correspond au début de ma liste d'éléments
'je selectionne la cellule de la ligne en dessous [L+1] à la colonne D [4]
'j'étend la sélection jusqu'à la fin de la liste de données
Range(Selection, Selection.End(xlDown)).Select
'BIEN ÉVIDEMMENT TOUTES LES DONNÉES DOIVENT SE SUIVRE (pas de blanc)
N = Selection.Count 'N = nombre de sélections
Cells(L, 2).Select 'le vais mettre ce nbre dans la cellule [L,2], à droite de la [Target]
ActiveCell.FormulaR1C1 = N 'Et voilà...
'MASQUER LES CELLULES
'je sélectionne les cells à/c ligne suivante [L+1]
'jusqu'aux cells [L+N] soit la dernière ligne de ma liste
'je les masque [Hidden = True]
Range(Cells(L + 1, 1), Cells(L + N, 1)).EntireRow.Hidden = True
.Value = "+" 'Et bien évidemment je change [Target] en "+"
'======C'est fini, mais pour faire joli
Cells(L, 3).Select
'SINON SI [TARGET] = "+"
ElseIf .Value = "+" Then
'DEMASQUER LES CELLULES
Cells(L + 1, 4).Select 'Je recommence
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = False
.Value = "-" 'Et bien évidemment je change [Target] en "-"
'======C'est fini, mais pour faire joli
Cells(L, 3).Select
End If
End With
'Ma [Target] est un objet agissant comme un CommandButton
'sur lequel je cliquae pour lancer une action
'En l'occurrence, le double click sur la [Target] ayant fait ce que je voulais
'je sort avec
Cancel = True
End Sub
Tous les commentaires, c'est pour Jeny moi et les autres pauvres débutants qui n'y comprennent pas grand choses et avancent à petits pas - Genre binaire quoi... Lol......
@+ peper-eliot