[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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #24655341
Bonjour,
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

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
h2so4
Le #24655811
Bonjour,

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:
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 comp osée
des données de la même colonne et des lignes allant de 4 à 15. Ce q ue 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'adres se. 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
HD
Le #24657361
Hum... pour vous expliquer un peu le problème j'ai copier/coller des bouts
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
Publicité
Poster une réponse
Anonyme