[VBA] Définir la validation d'une cellule via une liste qui se trouve sur la colonne de la cellule en question
3 réponses
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"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
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
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"
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
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
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"
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
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
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.
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.