Bonjour à tous et toutes et bonne année
Je me permet de vous poser une question simple : comment fait on une liste
déroulante ( la cellule à un petit ascenseur par coté) dans Excel . Ex :
j'ai Pierre, paul ,jacques dans 3 cellules differents , dans la même
colonne. Je veux que ces noms apparaissent au choix dans une autre
cellule.Quelle est la manip?
Deux autres questions auxquelles tu dois répondre pour améliorer ta structuration des données:
1. Y a-t-il des dépendances entre tes listes?
Pas de dépendance, chaque liste est indépendante, mais je garde bien précieusement ce code adapté d'après une idée de Sitting Hoax BM '3/1/2005 'à coller dans le module de la feuille
'**************** 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).Offset(1, 0).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).Offset(1, 0).Select Exit Sub End With End If Range(addr).Select End Sub '****************** Qui permet de définir une liste de validation conditionnelle.
Autrement dit, tu auras toujours AUTANT de Surfaces que d'Usines. Dans ce cas, tu pourras compter le nombre d'Usines seulement (avec DECALER(;;;NB();). Surface serait défini ainsi: ÞCALER(Usines;0;1)
2. Les noms des listes sont-ils bien choisis. Suffit-il de les lire pour comprendre immédiatement à quoi ils réfèrent. Les noms choisis sont explicites -On n'y gagne pas en longueur, mais pour la
maintenance...-
Autrement, il n'y a rien à rajouter :-)
Encore merci, Daniel,
Bien cordialement,
Patrick.
Bonsoir, *Daniel*
Deux autres questions auxquelles tu dois répondre pour améliorer ta
structuration des données:
1. Y a-t-il des dépendances entre tes listes?
Pas de dépendance, chaque liste est indépendante, mais je garde bien
précieusement ce code adapté d'après une idée de Sitting Hoax BM
'3/1/2005
'à coller dans le module de la feuille
'****************
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).Offset(1, 0).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).Offset(1, 0).Select
Exit Sub
End With
End If
Range(addr).Select
End Sub
'******************
Qui permet de définir une liste de validation conditionnelle.
Autrement dit, tu auras toujours AUTANT de Surfaces que d'Usines.
Dans ce cas, tu pourras compter le nombre d'Usines seulement (avec
DECALER(;;;NB();).
Surface serait défini ainsi:
ÞCALER(Usines;0;1)
2. Les noms des listes sont-ils bien choisis. Suffit-il de les lire
pour comprendre immédiatement à quoi ils réfèrent.
Les noms choisis sont explicites -On n'y gagne pas en longueur, mais pour la
Deux autres questions auxquelles tu dois répondre pour améliorer ta structuration des données:
1. Y a-t-il des dépendances entre tes listes?
Pas de dépendance, chaque liste est indépendante, mais je garde bien précieusement ce code adapté d'après une idée de Sitting Hoax BM '3/1/2005 'à coller dans le module de la feuille
'**************** 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).Offset(1, 0).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).Offset(1, 0).Select Exit Sub End With End If Range(addr).Select End Sub '****************** Qui permet de définir une liste de validation conditionnelle.
Autrement dit, tu auras toujours AUTANT de Surfaces que d'Usines. Dans ce cas, tu pourras compter le nombre d'Usines seulement (avec DECALER(;;;NB();). Surface serait défini ainsi: ÞCALER(Usines;0;1)
2. Les noms des listes sont-ils bien choisis. Suffit-il de les lire pour comprendre immédiatement à quoi ils réfèrent. Les noms choisis sont explicites -On n'y gagne pas en longueur, mais pour la
maintenance...-
Autrement, il n'y a rien à rajouter :-)
Encore merci, Daniel,
Bien cordialement,
Patrick.
Daniel.M
Patrick,
1. Y a-t-il des dépendances entre tes listes?
Pas de dépendance, chaque liste est indépendante, mais je garde bien précieusement ce code adapté d'après une idée de Sitting Hoax BM '3/1/2005 'à coller dans le module de la feuille
'**************** Private Sub Worksheet_Change(ByVal Target As Range) addr = Target.Address If Range("a1") = "x" Then ... End If If Range("a1") = "y" Then ... End If Range(addr).Select End Sub '****************** Qui permet de définir une liste de validation conditionnelle.
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Dernière remarque: Hypothétiquement, il est possible que Liste1 et/ou Liste2 (ni aucune des 50 autres listes de ton classeur) n'ait pas besoin d'être définies pour autant que ces Noms puissent être facilement dérivés de la valeur en A1: un seul Nom qui va chercher la bonne Liste selon la valeur en A1 (un autre gain de performance). À toi de voir.
Salutations,
Daniel M.
Patrick,
1. Y a-t-il des dépendances entre tes listes?
Pas de dépendance, chaque liste est indépendante, mais je garde bien
précieusement ce code adapté d'après une idée de Sitting Hoax BM
'3/1/2005
'à coller dans le module de la feuille
'****************
Private Sub Worksheet_Change(ByVal Target As Range)
addr = Target.Address
If Range("a1") = "x" Then
...
End If
If Range("a1") = "y" Then
...
End If
Range(addr).Select
End Sub
'******************
Qui permet de définir une liste de validation conditionnelle.
Ma façon de définir une liste de validation conditionnelle serait de mettre la
formule suivante dans le code de la liste et de FAIRE FI complètement des
événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux
événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus
de re-définition des listes de validation pour A1 s'effectue à chaque changement
sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que
si A1 change.
Dernière remarque: Hypothétiquement, il est possible que Liste1 et/ou Liste2 (ni
aucune des 50 autres listes de ton classeur) n'ait pas besoin d'être définies
pour autant que ces Noms puissent être facilement dérivés de la valeur en A1: un
seul Nom qui va chercher la bonne Liste selon la valeur en A1 (un autre gain de
performance). À toi de voir.
Pas de dépendance, chaque liste est indépendante, mais je garde bien précieusement ce code adapté d'après une idée de Sitting Hoax BM '3/1/2005 'à coller dans le module de la feuille
'**************** Private Sub Worksheet_Change(ByVal Target As Range) addr = Target.Address If Range("a1") = "x" Then ... End If If Range("a1") = "y" Then ... End If Range(addr).Select End Sub '****************** Qui permet de définir une liste de validation conditionnelle.
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Dernière remarque: Hypothétiquement, il est possible que Liste1 et/ou Liste2 (ni aucune des 50 autres listes de ton classeur) n'ait pas besoin d'être définies pour autant que ces Noms puissent être facilement dérivés de la valeur en A1: un seul Nom qui va chercher la bonne Liste selon la valeur en A1 (un autre gain de performance). À toi de voir.
Salutations,
Daniel M.
Patrick BASTARD
Bonjour, *Daniel* Je lis à l'instant ton post avec le plus grand intéret :
Mais trop, ou pas assez dormi, je ne pige pas tout :
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
=SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle)) Je ne vois pas où placer cette formule
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Ca, j'ai réussi à le comprendre, et me paraît logique.
Bien cordialement,
Patrick.
Bonjour, *Daniel*
Je lis à l'instant ton post uahynbc9EHA.3700@tk2msftngp13.phx.gbl
avec le plus grand intéret :
Mais trop, ou pas assez dormi, je ne pige pas tout :
Ma façon de définir une liste de validation conditionnelle serait de
mettre la formule suivante dans le code de la liste et de FAIRE FI
complètement des événements Worksheet_Change
=SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle))
Je ne vois pas où placer cette formule
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait
appel aux événements, plus il est rapide. Car avec le code soumis
ci-dessus, le processus de re-définition des listes de validation
pour A1 s'effectue à chaque changement sur cette feuille. Dans celui
que je te propose, la formule n'est recalculée que si A1 change.
Ca, j'ai réussi à le comprendre, et me paraît logique.
Bonjour, *Daniel* Je lis à l'instant ton post avec le plus grand intéret :
Mais trop, ou pas assez dormi, je ne pige pas tout :
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
=SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle)) Je ne vois pas où placer cette formule
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Ca, j'ai réussi à le comprendre, et me paraît logique.
Bien cordialement,
Patrick.
Patrick BASTARD
Bonjour, *Daniel*
Oublie ma dernière intervention.
J'ai fini par comprendre :
En F1:F15 : Liste1 En G1:G12 : Liste2 En H1:H15 : MaListe avec pour chaque item =SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle))
Si Donnée, Validation, liste, H1:H15 en B1, le choix est bien fonction de la valeur entrée en A1.
Merci de m'avoir permis de découvrir une technique que je ne connaissais pas encore.
Mais il en reste quand même un paquet...
Bien cordialement,
Patrick.
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Bonjour, *Daniel*
Oublie ma dernière intervention.
J'ai fini par comprendre :
En F1:F15 : Liste1
En G1:G12 : Liste2
En H1:H15 : MaListe avec pour chaque item
=SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle))
Si Donnée, Validation, liste, H1:H15 en B1, le choix est bien fonction de la
valeur entrée en A1.
Merci de m'avoir permis de découvrir une technique que je ne connaissais pas
encore.
Mais il en reste quand même un paquet...
Bien cordialement,
Patrick.
Ma façon de définir une liste de validation conditionnelle serait de
mettre la formule suivante dans le code de la liste et de FAIRE FI
complètement des événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait
appel aux événements, plus il est rapide. Car avec le code soumis
ci-dessus, le processus de re-définition des listes de validation
pour A1 s'effectue à chaque changement sur cette feuille. Dans celui
que je te propose, la formule n'est recalculée que si A1 change.
En F1:F15 : Liste1 En G1:G12 : Liste2 En H1:H15 : MaListe avec pour chaque item =SI($A$1="x";Liste1;SI($A$1="y";Liste2;ListeNulle))
Si Donnée, Validation, liste, H1:H15 en B1, le choix est bien fonction de la valeur entrée en A1.
Merci de m'avoir permis de découvrir une technique que je ne connaissais pas encore.
Mais il en reste quand même un paquet...
Bien cordialement,
Patrick.
Ma façon de définir une liste de validation conditionnelle serait de mettre la formule suivante dans le code de la liste et de FAIRE FI complètement des événements Worksheet_Change
AMA (et j'insiste, c'est juste mon avis perso), moins ton modèle fait appel aux événements, plus il est rapide. Car avec le code soumis ci-dessus, le processus de re-définition des listes de validation pour A1 s'effectue à chaque changement sur cette feuille. Dans celui que je te propose, la formule n'est recalculée que si A1 change.
Daniel.M
Salut Patrick,
C'est ça!
N'oublie pas de définir ListeNulle qui contiendrait la string (ou quelquechose du genre): "Absence de choix. Vérifiez que vous avec x ou y en A1"
Salutations,
Daniel M.
Salut Patrick,
C'est ça!
N'oublie pas de définir ListeNulle qui contiendrait la string (ou quelquechose
du genre):
"Absence de choix. Vérifiez que vous avec x ou y en A1"