Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Numéro d'item dans un choix.

7 réponses
Avatar
Patrick BASTARD
Bonsoir, toutes et tous.

J'ai à nouveau besoin de vos compétences (et ce n'est pas fini...) :
Pourriez-vous m'aider à récupérer en VBA le n° de l' item choisi dans une
liste déroulante issue de Données, Validation, Liste , et à l'affecter à une
variable "i" ?

Hélàs, l'enregistreur n'enregistre rien.
:-(

D'avance, Merci.

--
Bien amicordialement,
P. Bastard

7 réponses

Avatar
isabelle
bonjour Patrick,

si la liste de validation est en Feuil1 cellule A1
et la plage source nommé "zz"

i = Application.Match(Sheets("Feuil1").[A1], Range("zz"), 0)

isabelle


Bonsoir, toutes et tous.

J'ai à nouveau besoin de vos compétences (et ce n'est pas fini...) :
Pourriez-vous m'aider à récupérer en VBA le n° de l' item choisi dans une
liste déroulante issue de Données, Validation, Liste , et à l'affecter à une
variable "i" ?

Hélàs, l'enregistreur n'enregistre rien.
:-(

D'avance, Merci.



Avatar
anonymousA
Bonsoir,

A mettre dans le module de la feuille et en supposant que la cellule
pour laquelle Données/validation est effective est en E1 et que tu as au
moins Excel 2000 .

si la liste fait référence à une plage de cellules (nommée ou pas)

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("E1")) Is Nothing Then MsgBox
Application.WorksheetFunction.Match(Target.Value,
Range(Split(Target.Validation.Formula1, "=")(1)), 0)

End Sub

te donnera la position dans la plage source de la valuer sur laquelle tu
auras cliquée.

Si c'est une liste ecrite à la main
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E1")) Is Nothing Then
For I = LBound(Split(Target.Validation.Formula1, ";")) To
UBound(Split(Target.Validation.Formula1, ";"))
If Split(Target.Validation.Formula1, ";")(I) = Target.Value
Then MsgBox I + 1
Next
End If
End Sub

A+

Bonsoir, toutes et tous.

J'ai à nouveau besoin de vos compétences (et ce n'est pas fini...) :
Pourriez-vous m'aider à récupérer en VBA le n° de l' item choisi dans une
liste déroulante issue de Données, Validation, Liste , et à l'affecter à une
variable "i" ?

Hélàs, l'enregistreur n'enregistre rien.
:-(

D'avance, Merci.



Avatar
Patrick BASTARD
Merci, *isabelle*

Je teste et reviens si besoin.

--
Bien amicordialement,
P. Bastard


bonjour Patrick,

si la liste de validation est en Feuil1 cellule A1
et la plage source nommé "zz"

i = Application.Match(Sheets("Feuil1").[A1], Range("zz"), 0)

isabelle


Bonsoir, toutes et tous.

J'ai à nouveau besoin de vos compétences (et ce n'est pas fini...) :
Pourriez-vous m'aider à récupérer en VBA le n° de l' item choisi
dans une liste déroulante issue de Données, Validation, Liste , et à
l'affecter à une variable "i" ?

Hélàs, l'enregistreur n'enregistre rien.
:-(

D'avance, Merci.




Avatar
Patrick BASTARD
Bonsoir, *anonymousA*

Et merci.

Voici de quoi, si'l en était besoin, clouer le bec de
"Laurent"

Comme d'hab, je reviens en cas de souci.
;-)
--
Bien amicordialement,
P. Bastard


Bonsoir,

A mettre dans le module de la feuille et en supposant que la cellule
pour laquelle Données/validation est effective est en E1 et que tu as
au moins Excel 2000 .

si la liste fait référence à une plage de cellules (nommée ou pas)

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("E1")) Is Nothing Then MsgBox
Application.WorksheetFunction.Match(Target.Value,
Range(Split(Target.Validation.Formula1, "=")(1)), 0)

End Sub

te donnera la position dans la plage source de la valuer sur laquelle
tu auras cliquée.

Si c'est une liste ecrite à la main
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E1")) Is Nothing Then
For I = LBound(Split(Target.Validation.Formula1, ";")) To
UBound(Split(Target.Validation.Formula1, ";"))
If Split(Target.Validation.Formula1, ";")(I) = Target.Value
Then MsgBox I + 1
Next
End If
End Sub

A+

Bonsoir, toutes et tous.

J'ai à nouveau besoin de vos compétences (et ce n'est pas fini...) :
Pourriez-vous m'aider à récupérer en VBA le n° de l' item choisi
dans une liste déroulante issue de Données, Validation, Liste , et à
l'affecter à une variable "i" ?

Hélàs, l'enregistreur n'enregistre rien.
:-(

D'avance, Merci.




Avatar
Clément Marcotte
Bonjour,

Voici de quoi, si'l en était besoin, clouer le bec de
"Laurent"




Le pôvre il a un nom noble comme dans caisse de nouilles

Avatar
Patrick BASTARD
Bonsoir, *Clément*

Ou corvée de ch...tes ?

C'est pas bien de se moquer, Clément !
ROFL ROFL

--
Bien amicordialement,
P. Bastard



Bonjour,

Voici de quoi, si'l en était besoin, clouer le bec de
"Laurent"




Le pôvre il a un nom noble comme dans caisse de nouilles



Avatar
anonymousA
Bonjour,

pour compléter ( dans le cas de listes avec une soutrce de plage
nommée qui n'appartient pas à la feuille où se situe la cellules
contenant la validation) et réparer une erreur de frappe dans la
formule communiquée.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("E1")) Is Nothing Then
nam = Split(Target.Validation.Formula1, "=")(1)
On Error Resume Next
Set rg = Sheets(Split(Split(ActiveWorkbook.Names(nam).RefersTo,
"=")(1), "!")(0))
If Err <> 0 Then
MsgBox Application.WorksheetFunction.Match(Target.Value,
Range(Split(Target.Validation.Formula1, "=")(1)), 0)
Else
MsgBox Application.WorksheetFunction.Match(Target.Value,
rg.Range(nam), 0)
End If
End If

End Sub

A+