OVH Cloud OVH Cloud

pb validations de données

4 réponses
Avatar
ChP
Bonsoir bonsoir,

Petit pb avec les validations de données : je souhaite faire la manip
suivante :
si A1 = x alors A2 me présente une liste déroulante liste1
si A1 est différent de x alors je tape ce que je veux dans A2.

mon pb est que quand c'est validé je ne peux plus rentrer autre chose que la
liste de validation !

Si qqn peut m'aider...

Bonne année !!

ChP.

4 réponses

Avatar
Sitting Hoax \(BM\)
Bonsoir,
voici une petite macro évènementielle qui devrait convenir.
j'ai mis "x" entre guillemets, pour plus de facilité car je ne sais pas
comment tu l'obtiens.
A toi d'adapter.
à coller dans le module de la feuille
(click droit sur l'onglet
et visualiser le code)
'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("A2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") <> "x" Then
Range("A2").Select
With Selection.Validation
.Delete
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************
à chaque changement de valeur dans la feuille(Worksheet_Change), la macro
met validation en A2 si A1 ="x" (entre guillemets), ou enlève la validation
en A2 si A1 <>"x".

Amicalement
Sitting Hoax

"ChP" a écrit dans le message de
news:
Bonsoir bonsoir,

Petit pb avec les validations de données : je souhaite faire la manip
suivante :
si A1 = x alors A2 me présente une liste déroulante liste1
si A1 est différent de x alors je tape ce que je veux dans A2.

mon pb est que quand c'est validé je ne peux plus rentrer autre chose que
la

liste de validation !

Si qqn peut m'aider...

Bonne année !!

ChP.




Avatar
Patrick BASTARD
Bonjour, *Sitting Hoax (BM)*
J'ai lu ton post
avec le plus grand intéret :

Je cherchais en effet un moyen de gérer plusieurs listes de validation
"conditionnelles"

J'ai donc modifié ton code comme suit :

'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") = "y" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste2"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************

mais je m'aperçois qu'il me faut valider 2 fois par entrée pour passer à la
ligne suivante.
Est-ce à cause du Range(addr).Select ?

Bien cordialement,

Patrick.

Bonsoir,
voici une petite macro évènementielle qui devrait convenir.
j'ai mis "x" entre guillemets, pour plus de facilité car je ne sais
pas comment tu l'obtiens.
A toi d'adapter.
à coller dans le module de la feuille
(click droit sur l'onglet
et visualiser le code)
'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("A2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") <> "x" Then
Range("A2").Select
With Selection.Validation
.Delete
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************
à chaque changement de valeur dans la feuille(Worksheet_Change), la
macro met validation en A2 si A1 ="x" (entre guillemets), ou enlève
la validation en A2 si A1 <>"x".

Amicalement
Sitting Hoax

"ChP" a écrit dans le message de
news:
Bonsoir bonsoir,

Petit pb avec les validations de données : je souhaite faire la manip
suivante :
si A1 = x alors A2 me présente une liste déroulante liste1
si A1 est différent de x alors je tape ce que je veux dans A2.

mon pb est que quand c'est validé je ne peux plus rentrer autre
chose que la liste de validation !

Si qqn peut m'aider...

Bonne année !!

ChP.




Avatar
Sitting Hoax \(BM\)
Oui,
on peut toujours mettre
Range(addr).Offset(1, 0).Select
?
Amicalement
Sitting Hoax

"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Sitting Hoax (BM)*
J'ai lu ton post
avec le plus grand intéret :

Je cherchais en effet un moyen de gérer plusieurs listes de validation
"conditionnelles"

J'ai donc modifié ton code comme suit :

'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") = "y" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste2"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************

mais je m'aperçois qu'il me faut valider 2 fois par entrée pour passer à
la

ligne suivante.
Est-ce à cause du Range(addr).Select ?

Bien cordialement,

Patrick.

Bonsoir,
voici une petite macro évènementielle qui devrait convenir.
j'ai mis "x" entre guillemets, pour plus de facilité car je ne sais
pas comment tu l'obtiens.
A toi d'adapter.
à coller dans le module de la feuille
(click droit sur l'onglet
et visualiser le code)
'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("A2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") <> "x" Then
Range("A2").Select
With Selection.Validation
.Delete
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************
à chaque changement de valeur dans la feuille(Worksheet_Change), la
macro met validation en A2 si A1 ="x" (entre guillemets), ou enlève
la validation en A2 si A1 <>"x".

Amicalement
Sitting Hoax

"ChP" a écrit dans le message de
news:
Bonsoir bonsoir,

Petit pb avec les validations de données : je souhaite faire la manip
suivante :
si A1 = x alors A2 me présente une liste déroulante liste1
si A1 est différent de x alors je tape ce que je veux dans A2.

mon pb est que quand c'est validé je ne peux plus rentrer autre
chose que la liste de validation !

Si qqn peut m'aider...

Bonne année !!

ChP.








Avatar
Patrick BASTARD
Bonjour, *Sitting Hoax (BM)*

En relisant les post récents, je m'aperçois que je ne t'avais pas remercié.

Maintenant, c'est fait.

Bien cordialement,

Patrick.


Oui,
on peut toujours mettre
Range(addr).Offset(1, 0).Select
?
Amicalement
Sitting Hoax

"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Sitting Hoax (BM)*
J'ai lu ton post
avec le plus grand intéret :

Je cherchais en effet un moyen de gérer plusieurs listes de
validation "conditionnelles"

J'ai donc modifié ton code comme suit :

'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") = "y" Then
Range("b1").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste2"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************

mais je m'aperçois qu'il me faut valider 2 fois par entrée pour
passer à la ligne suivante.
Est-ce à cause du Range(addr).Select ?

Bien cordialement,

Patrick.

Bonsoir,
voici une petite macro évènementielle qui devrait convenir.
j'ai mis "x" entre guillemets, pour plus de facilité car je ne sais
pas comment tu l'obtiens.
A toi d'adapter.
à coller dans le module de la feuille
(click droit sur l'onglet
et visualiser le code)
'****************
Private Sub Worksheet_Change(ByVal Target _
As Range)
addr = Target.Address
If Range("a1") = "x" Then
Range("A2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.ShowInput = True
.ShowError = True
Range(addr).Select
Exit Sub
End With
End If
If Range("a1") <> "x" Then
Range("A2").Select
With Selection.Validation
.Delete
Range(addr).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************
à chaque changement de valeur dans la feuille(Worksheet_Change), la
macro met validation en A2 si A1 ="x" (entre guillemets), ou enlève
la validation en A2 si A1 <>"x".

Amicalement
Sitting Hoax

"ChP" a écrit dans le message de
news:
Bonsoir bonsoir,

Petit pb avec les validations de données : je souhaite faire la
manip suivante :
si A1 = x alors A2 me présente une liste déroulante liste1
si A1 est différent de x alors je tape ce que je veux dans A2.

mon pb est que quand c'est validé je ne peux plus rentrer autre
chose que la liste de validation !

Si qqn peut m'aider...

Bonne année !!

ChP.