Resultat validation differents du choix

JBOBO

XLDnaute Accro
Bonjour le forum,

Une petite question,

Est t'il possible d'avoir une liste de choix dans une cellule (donnees/validations /listes), qui renvoie une valeur décaler, par exemple si en A1:A2, j'ai respectivement TOTO et TITI, et en B1:B2, j'ai 1 et 2, alors si je choisis TITI, il m'affiche 2 et si je choisis TOTO il m'affiche 1. et ceci dans la meme cellule que la liste de validation.

J' ai regardé sur le forum en cherchant liste validation décaler mais pas trouvé mon bonheur.

Merci d'avance.
 

Pièces jointes

  • validation.xls
    19.5 KB · Affichages: 63
  • validation.xls
    19.5 KB · Affichages: 58
  • validation.xls
    19.5 KB · Affichages: 60

Tibo

XLDnaute Barbatruc
Re : Resultat validation differents du choix

Bonjour,

Pas sûr d'avoir compris.

Tu peux peut-être essayer avec cette formule en G5 par exemple :

Code:
=SI(NB.SI(liste;F5)=0;"";RECHERCHEV(F5;C5:D6;2;0))

Si pas ça, reviens avec plus de détails

@+
 

JBOBO

XLDnaute Accro
Re : Resultat validation differents du choix

Tu peux peut-être essayer avec cette formule en G5 par exemple :

Code:
=SI(NB.SI(liste;F5)=0;"";RECHERCHEV(F5;C5:D6;2;0))

Si pas ça, reviens avec plus de détails

@+

Bonjour tibo,
merci de me venir en aide.
C'est bien le resultat que j'attend, mais je voudrais qu'il se trouve dans la meme cellule que ma liste de choix en l'occurance F5 ici.
En fait si je choisis toto, il ne m'affiche pas toto mais 1

En esperant avoir été plus clair.

Merci.

edit pour job75 : N'est il pas possible de renvoyer une cellule décaler par rapport au choix effectué ?
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Resultat validation differents du choix

Bonjour JBOBO, Tibo, Job,

Voici un essai dans le fichier joint.
La macro évènementielle suivante est sur la feuille contenant la validation.
VB:
'la macro "_Change" de la feuille se déclanche à chaque changement d'une (ou plusieurs)
'cellule de la feuille.
'"Target" représente cette (ces) cellule(s) venant(s) de changer
Private Sub Worksheet_Change(ByVal Target As Range)

    'si la cellule venant de changer n'est pas dans la zone couverte par la validation (A2:A20), quitter la macro
    If Application.Intersect(Range("A2:A20"), Target(1, 1)) Is Nothing Then Exit Sub
    
    'si la cellule qui vient de changer est vide, quitter la macro
    If Target(1, 1).Text = "" Then Exit Sub
    
    'effacer la validation de la cellule
    Target.Validation.Delete
    
    'désactiver les évènements (affin de ne pas re-rentrer dans la macro)
    Application.EnableEvents = False
    
    'modifier la valeur de la cellule qui vient de changer (mettre l'équivalent du choix qui vient d'être fait)
    Target.Value = Application.Evaluate("=INDEX(OFFSET(liste,,1),MATCH(""" & Target(1, 1).Text & """,liste,0))")
    
    'réactiver les évènements
    Application.EnableEvents = True
    
    'remettre la validation de la cellule
    Target.Validation.Add xlValidateList, , , "=liste"
End Sub
a+
 

Pièces jointes

  • validation.xls
    39.5 KB · Affichages: 103
  • validation.xls
    39.5 KB · Affichages: 88
  • validation.xls
    39.5 KB · Affichages: 96
Dernière édition:

JBOBO

XLDnaute Accro
Re : Resultat validation differents du choix

Bonjour mromain,

Je ne vois qu'une chose à dire : Chapeau bas l'artiste.

Je viens de l'adapter à mon fichier et apparemment ça marche.

Je n'aurais jamais trouvé sans vous et en plus tout ça avec une rapidité deconcertante.

Mille fois merci !
 

JBOBO

XLDnaute Accro
Re : Resultat validation differents du choix

Bonjour hoerwind,


Bizarre quand meme ta solution. ça mérite quelques explications si tu veux bien.

J'ai essayé dans un premier temps de reproduire ta solution en recreant une zone nommée de 2 colonnes et x lignes. pas de problème.
Ensuite j'ai voulu créer la zone de validation liste avec pour source ma liste nommée et là : plantage car validation liste n'accepte qu'une seule ligne ou colonne.

Je refais ensuite l'essai en créant une zone nommé d'une seule colonne, puis validation liste et nom de la zone en source. Là ok. mais du coup une seule colonne sert de liste.
Il faut ensuite retourné dans les gestionnaires de noms et changer la plage initiale et la mettre sur le nombre de colonne souhaité pour que la validation me prennent les 2 colonnes.

Bref je m'aperçois que j'écris un roman qui risque d'etre incomprehensible, mais si toutefois t'as compris quelque chose j'aimerais bien que tu m'expliques histoire que je comprenne aussi.

Merci.
 
Dernière édition:

JBOBO

XLDnaute Accro
Re : Resultat validation differents du choix

rebonjour mromain,

Dans ta proposition, est il possible de garder la valeur de la cellule si celle ci est renseigné directement car là ça marche tant que je reste dans le cadre d'un choix d'une liste. Hors si je rentre quelque chose manuellement il me met #N/A.
Dans la zone nommée j'ai bien essayé un truc du genre :

Code:
=SI(ESTERREUR(DECALER(FeuilListe!$A$1;1;;NBVAL(FeuilListe!$A:$A)-1))=VRAI;INDIRECT(ADRESSE(LIGNE();COLONNE()));DECALER(FeuilListe!$A$1;1;;NBVAL(FeuilListe!$A:$A)-1))

mais là bug total.

Si quelqu'un à une idée ?
 

mromain

XLDnaute Barbatruc
Re : Resultat validation differents du choix

Re bonjour,
hoerwind,

Voici un autre essai :
VB:
'la macro "_Change" de la feuille se déclanche à chaque changement d'une (ou plusieurs)
'cellule de la feuille.
'"Target" représente cette (ces) cellule(s) venant(s) de changer
Private Sub Worksheet_Change(ByVal Target As Range)

    'si la cellule venant de changer n'est pas dans la zone couverte par la validation (A2:A20), quitter la macro
    If Application.Intersect(Range("A2:A20"), Target(1, 1)) Is Nothing Then Exit Sub
    
    'si la cellule qui vient de changer est vide, quitter la macro
    If Target(1, 1).Text = "" Then Exit Sub
    
    'si ce qui vient d'être saisi n'est pas dans "liste", quitter la macro
    If Application.Evaluate("ISNA(MATCH(""" & Target(1, 1).Text & """,liste,0))") = True Then Exit Sub
    
    'effacer la validation de la cellule
    Target.Validation.Delete
    
    'désactiver les évènements (affin de ne pas re-rentrer dans la macro)
    Application.EnableEvents = False
    
    'modifier la valeur de la cellule qui vient de changer (mettre l'équivalent du choix qui vient d'être fait)
    Target.Value = Application.Evaluate("=INDEX(OFFSET(liste,,1),MATCH(""" & Target(1, 1).Text & """,liste,0))")
    
    'réactiver les évènements
    Application.EnableEvents = True
    
    'remettre la validation de la cellule
    Target.Validation.Add xlValidateList, , , "=liste"
End Sub
a+
 
Dernière édition:

hoerwind

XLDnaute Barbatruc
Re : Resultat validation differents du choix

Re,

Tu as tout compris !

Données - Validation - Source n'admet qu'une seule colonne, ... à sa création.
L'astuce consiste dans la modification de la plage de référence après avoir créer la liste.
Excel n'y voit que du feu et affiche bien les deux (ou 3, 4, ... colonnes).

Dans ton exemple je t'ai proposé de faire référence à trois colonnes, dont la dernière est vide, uniquement pour plus de lisibilité lors du choix.

Tout cela n'est pas très académique, mais cela fonctionne, ce qui est le but principal.
 

mromain

XLDnaute Barbatruc
Re : Resultat validation differents du choix

Bonjour à tous,
Données - Validation - Source n'admet qu'une seule colonne, ... à sa création.
L'astuce consiste dans la modification de la plage de référence après avoir créer la liste.
Excel n'y voit que du feu et affiche bien les deux (ou 3, 4, ... colonnes).
Merci pour l'astuce hoerwind ;). Je la mets de coté.

a+
 

Discussions similaires

Réponses
8
Affichages
445
Réponses
3
Affichages
255

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 526
dernier inscrit
HEC