Salut Steelson,
je vois ce que tu veux dire : liberté totale de créer cette liste de validation où qu'on soit dans une feuille, même en [XFD1000000]...
Là, il faut faire une petite gymnastique :
- sur un changement de valeur, reconnaître l'adresse de la cellule-validation ;
- pour permettre un changement de valeur dans une autre cellule que la cellule-validation ;
- pour nettoyer la cellule-validation si un changement survient dans une autre cellule que celle-là suite à un changement d'avis de l'utilisateur.
Bref, l'idée d'une cellule fixe réduisait cette gymnastique à rien du tout.
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'
Dim sItem$
'
Cancel = True
Application.EnableEvents = False
'
With Sh
If Target = "" Then
Target.Validation.Delete
[AAB1] = Target.Address
For x = 1 To Sheets.Count
.Range("AAA" & x).Value = Sheets(x).Name
Next
End If
sItem = Sh.Name
Target.Validation.Add Type:=xlValidateList, Formula1:="=" & sItem & "!AAA1:AAA" & x
End With
'
Application.EnableEvents = True
'
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim sItem$
'
Application.EnableEvents = False
'
With Sh
If [AAB1] <> "" Then
If Not Intersect(Target, .Range([AAB1])) Is Nothing Then
sItem = Target
Target = ""
End If
.Range([AAB1]).Validation.Delete
.Range("AAA:AAA").Value = ""
.[AAB1] = ""
If sItem <> "" Then Worksheets(sItem).Activate
End If
End With
'
Application.EnableEvents = True
'
End Sub
A+