Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Validation des données par une formule

Onagre

XLDnaute Nouveau
Bonjour,

J'ai créer il y a quelques temps un "organiseur" de jardin/potager, pour l'instant simplement centré sur l'inventaire des semences.

Pour une question d'apparence et de simplicité, certaines lignes de ma colonne B de mon inventaire son fusionnées (elles correspondent à une espèce de plante qui à plusieurs variétés (exemple : B7:B8 --> Amarante, et C7 --> 1ère variété C8 --> 2ème variété).
J'ai créer une validation de données (qui fonctionne par listes de noms) dans ma colonne C en fonction de l’espèce rentrée dans la colonne B.

Le soucis est que lorsque la validation de données de C8 recherche la référence en B8 par exemple, et bien la cellule répond comme vide, et donc je n'ai pas de variété disponible qui apparaît.
Depuis l’apparition du problème j'ai essayé plusieurs solutions de formule via la validation de données (DECALER avec INDEX, ajouter une condition SI ESTVIDE DECALER etc) pour effectuer la recherche sur la dernière référence non vide en remontant, pour le coup C7, mais rien n'y fait.

Actuellement le problème est présent sur des cellules fusionnées à partir de 2 ou 3 lignes, mais à l'avenir certaines cellules seront la fusion de 8 à 10 lignes.

Je place le fichier xlsx juste là au cas ou quelqu'un aurait une solution parce que moi je sèche.
 

Pièces jointes

  • Essai Validation des données.xlsx
    18.6 KB · Affichages: 14
Solution
Bonjour Onagre, JHA, Gégé-45550,

Sélectionner C2 et définir le nom LigRef par :
Code:
=DECALER(Listes!$1:$1;EQUIV(RECHERCHE("zzz";$B$1:$B2);Listes!$B:$B;0)-1;)
Puis définir la liste de validation en C2 par :
Code:
=DECALER(LigRef;;2;;NBVAL(LigRef)-2)
Et tirer C2 vers le bas, fichier joint.

A+

JHA

XLDnaute Barbatruc
Bonjour à tous,

Avec ce que je comprends, en colonne "B" une simple recherchev() suffit.
VB:
=RECHERCHEV(RECHERCHE("Ω";$A$2:$A2);Tableau_des_valeurs[[Type végétaux]:[Espèce]];2;FAUX)
Pour la colonne "C" petite modification de la formule decaler()
Code:
=DECALER(INDIRECT(SUBSTITUE(RECHERCHE("Ω";$B$2:$B2);" ";"_"));;;-1;NBVAL(INDIRECT(SUBSTITUE(RECHERCHE("Ω";$B$2:$B2);" ";"_"))))

Pour parader aux cellules fusionnées, j'utilise la fonction recherche() sur une plage non figée.
Code:
RECHERCHE("Ω";$A$2:$A2)
comme il ne trouve pas le symbole "Ω", la fonction retourne la dernière donnée connue.


JHA
 

Pièces jointes

  • Essai Validation des données.xlsx
    19.4 KB · Affichages: 9

Gégé-45550

XLDnaute Accro
Bonjour,

une autre approche avec formules matricielles dans un onglet "TECHNIQUE" annexe (qui peut être caché au besoin).

La liste de validation se fait avec la formule "=ListeVal". Je l'ai posée en Inventaire!B1 mais on la met ou on veut.

Bonne journée.
 

Pièces jointes

  • Essai Validation des données.xlsx
    21.3 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonjour Onagre, JHA, Gégé-45550,

Sélectionner C2 et définir le nom LigRef par :
Code:
=DECALER(Listes!$1:$1;EQUIV(RECHERCHE("zzz";$B$1:$B2);Listes!$B:$B;0)-1;)
Puis définir la liste de validation en C2 par :
Code:
=DECALER(LigRef;;2;;NBVAL(LigRef)-2)
Et tirer C2 vers le bas, fichier joint.

A+
 

Pièces jointes

  • Essai Validation des données(1).xlsx
    17.7 KB · Affichages: 12

Onagre

XLDnaute Nouveau
Super, merci à vous trois. En effet en appliquant la fonction RECHERCHE il me ressort bien la dernière valeur connue. Je ne savais pas que la formule renvoyée cette valeur lorsqu'elle ne trouvais pas le contenu dans la cellule initiale.

Et bien, un problème vite résolu ! Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…