OVH Cloud OVH Cloud

Validation avec liste dynamique

2 réponses
Avatar
Greg
Bonjour,

j'ai un problème dans ma macro avec une validation de données, je m'explique
:
Dans un classeur, la première feuille Feuil1 contient une liste dans la
colonne A succeptible d'être modifiée. J'ai donc créé
le nom "LISTE" auquel j'ai associé la formule
=DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A);1) en guise de référence pour
prévoir tout ajout dans la liste.

Jusque là tout va bien. c'est maintenant que ça ce complique :
je souhaite créer une procédure événementielle pour les autres feuilles du
classeur : à chaque fois que l'utilisateur
cliques sur une cellule située dans la plage "B9:B30" par exemple, je veux
que la cellule sélectionnée affiche en validation la liste définie dans
Feuil1.

Par exemple, si je clique sur la cellule B10 de Feuill2, ou encore B25 de
Feuill3 je veux que la liste déroulante de validation s'affiche conformément
aux valeurs du nom LISTE défini dans Feuil1.

J'ai donc codé dans la procédure événementielle
Workbook_SheetSelectionChange de ThisWorkBook (car je veux pour toute les
feuilles du classeurs) :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Excel.Range)
If (Not Intersect(Target, Range("B9:B30")) Is Nothing) And Cells.Count = 1
Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="=Feuil1!LISTE"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub

Mais il me sort un message d'erreur : "Erreur d'exécution 1004. Erreur
définie par l'application ou par l'objet".
Comment lui dire que le champ Formula1 correspond au nom LISTE de Feuill1 ?

Merci de vos réponses

2 réponses

Avatar
papou
Bonjour Greg
Remplace
xlBetween, Formula1:="þuil1!LISTE"
Par

xlBetween, Formula1:="=LISTE"

Cordialement
Pascal

"Greg" a écrit dans le message de
news:c94fro$9pa$
Bonjour,

j'ai un problème dans ma macro avec une validation de données, je
m'explique

:
Dans un classeur, la première feuille Feuil1 contient une liste dans la
colonne A succeptible d'être modifiée. J'ai donc créé
le nom "LISTE" auquel j'ai associé la formule
ÞCALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A);1) en guise de référence pour
prévoir tout ajout dans la liste.

Jusque là tout va bien. c'est maintenant que ça ce complique :
je souhaite créer une procédure événementielle pour les autres feuilles du
classeur : à chaque fois que l'utilisateur
cliques sur une cellule située dans la plage "B9:B30" par exemple, je veux
que la cellule sélectionnée affiche en validation la liste définie dans
Feuil1.

Par exemple, si je clique sur la cellule B10 de Feuill2, ou encore B25 de
Feuill3 je veux que la liste déroulante de validation s'affiche
conformément

aux valeurs du nom LISTE défini dans Feuil1.

J'ai donc codé dans la procédure événementielle
Workbook_SheetSelectionChange de ThisWorkBook (car je veux pour toute les
feuilles du classeurs) :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Excel.Range)
If (Not Intersect(Target, Range("B9:B30")) Is Nothing) And Cells.Count = 1
Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator: > _

xlBetween, Formula1:="þuil1!LISTE"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub

Mais il me sort un message d'erreur : "Erreur d'exécution 1004. Erreur
définie par l'application ou par l'objet".
Comment lui dire que le champ Formula1 correspond au nom LISTE de Feuill1
?


Merci de vos réponses




Avatar
Greg
En effet comme ça ça marche. Comme quoi, il en faut de peu parfois.

Merci pour ton aide rapide et efficace,

Greg

"papou" wrote in message
news:
Bonjour Greg
Remplace
xlBetween, Formula1:="þuil1!LISTE"
Par

xlBetween, Formula1:="=LISTE"

Cordialement
Pascal

"Greg" a écrit dans le message de
news:c94fro$9pa$
Bonjour,

j'ai un problème dans ma macro avec une validation de données, je
m'explique

:
Dans un classeur, la première feuille Feuil1 contient une liste dans la
colonne A succeptible d'être modifiée. J'ai donc créé
le nom "LISTE" auquel j'ai associé la formule
ÞCALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A);1) en guise de référence
pour


prévoir tout ajout dans la liste.

Jusque là tout va bien. c'est maintenant que ça ce complique :
je souhaite créer une procédure événementielle pour les autres feuilles
du


classeur : à chaque fois que l'utilisateur
cliques sur une cellule située dans la plage "B9:B30" par exemple, je
veux


que la cellule sélectionnée affiche en validation la liste définie dans
Feuil1.

Par exemple, si je clique sur la cellule B10 de Feuill2, ou encore B25
de


Feuill3 je veux que la liste déroulante de validation s'affiche
conformément

aux valeurs du nom LISTE défini dans Feuil1.

J'ai donc codé dans la procédure événementielle
Workbook_SheetSelectionChange de ThisWorkBook (car je veux pour toute
les


feuilles du classeurs) :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target


As Excel.Range)
If (Not Intersect(Target, Range("B9:B30")) Is Nothing) And Cells.Count 1
Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator: > > _

xlBetween, Formula1:="þuil1!LISTE"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub

Mais il me sort un message d'erreur : "Erreur d'exécution 1004. Erreur
définie par l'application ou par l'objet".
Comment lui dire que le champ Formula1 correspond au nom LISTE de
Feuill1


?

Merci de vos réponses