[VBA] Définir la validation d'une cellule via une liste qui se trouve sur la colonne de la cellule en question
Le
HD

Bonjour,
Je n'arrive pas à définir une liste de validation en VBA.
Je voudrais que pour chaque cellule sélectionnée avoir une liste composée
des données de la même colonne et des lignes allant de 4 à 15. Ce que j'ai
tenté de faire ici mais sans succès :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Cells(.Row, .Column).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, Formula1:= "=" & Range(Cells(4, .Column), Cells(15,
.Column)).Address
.IgnoreBlank = True
End With
End Sub
Le problème se situe au niveau de l'interprétation de l'adresse. Dans mon
essai sur une cellule en 1ère colonne j'avais Formula1:= "=$A$4:$A$15"
Merci d'avance pour votre aide
Cordialement,
HD
Je n'arrive pas à définir une liste de validation en VBA.
Je voudrais que pour chaque cellule sélectionnée avoir une liste composée
des données de la même colonne et des lignes allant de 4 à 15. Ce que j'ai
tenté de faire ici mais sans succès :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Cells(.Row, .Column).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, Formula1:= "=" & Range(Cells(4, .Column), Cells(15,
.Column)).Address
.IgnoreBlank = True
End With
End Sub
Le problème se situe au niveau de l'interprétation de l'adresse. Dans mon
essai sur une cellule en 1ère colonne j'avais Formula1:= "=$A$4:$A$15"
Merci d'avance pour votre aide
Cordialement,
HD
Je ne comprends pas ton code...
Dans la ligne suivante, à quoie le "." fait-il référence ?
With Cells(.Row, .Column).Validation
De même, dans ".Column" de :
Range(Cells(4, .Column)
Le point fait référence au dernierr "With"
c'est à dire à l'objet "Validatiion".
Cordialement.
Daniel
Essaie ceci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Cells(Target.Row, Target.Column).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=" & Range(Cells(4, Target.Column), _
Cells(15, Target.Column)).Address
.IgnoreBlank = True
End With
End Sub
h2so4
On Tuesday, July 24, 2012 5:28:04 PM UTC+2, HD wrote:
de code à droite à gauche en oubliant effectivement la partie With Target de
mon code...
En fait j'ai trouvé d'où provenait le problème... il semblerait que si les
cellules source de la liste sont protégées au moment de la création de la
liste ça génére une erreur. Je déprotège la feuille, je crée ma liste, puis
je reprotège ma feuille (sauf la cellule où se trouve ma liste) et cela
fonctionne.
Merci de votre aide
@+
HD