quand je veux définir une variable comme groupe de feuille après une feuille précise que dois je mettre apres
Dim WS as Worksheets pour qu'il ne prenne pas tout le classeur ?
je n'ai pas bien compris la question ! pourrais-tu reformuler avec un exemple ?
J'ai simplifié la macro ...
Option Explicit
Const crit = "A2"
Const var = "H6"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sw As Worksheet
Dim dico As Object
If Not Intersect(Range(crit), Target) Is Nothing Then
Set dico = CreateObject("Scripting.Dictionary")
For Each sw In Worksheets
dico(sw.Range(var).Value) = ""
Next
If dico.Count > 0 Then
Target.Validation.Delete
Target.Validation.Add xlValidateList, Formula1:=Join(dico.keys, ",")
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range(crit), Target) Is Nothing Then lister
End Sub
Private Sub Worksheet_Activate()
lister
End Sub
Sub lister()
Dim sw As Worksheet
Range("A1").CurrentRegion.Offset(1, 1).Clear
For Each sw In Worksheets
If sw.Range(var) = Range(crit) Then
Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = sw.Name
sw.Visible = True
Else
If sw.Name <> ActiveSheet.Name Then sw.Visible = False
End If
Next
End Sub