XL 2016 Saisie semi-automatique (VBA ou formule mais pas en insérant des objets)

albatore78

XLDnaute Nouveau
Bonjour @tous,

Après avoir consulté plusieurs site, je n'arrive pas à trouver ce que je veux. En effet, je souhaite avoir dans une cellule un menu déroulant, dont la liste provient d'une autre feuille, avec une saisie semi-automatique. Seul hic, il faut que la personne ne puisse pas saisir autre chose que ce qui se trouve dans le menu déroulant.

J'ai trouvé plusieurs méthodes mais à chaque fois il y a quelque chose qui ne me convient pas. En effet, en utilisant "Validations de données", on est obligé de retirer le message d'alerte bloquant. J'i essayé également avec la formule DECALER mais même constat.

Auriez-vous une solution qu'elle soit en VB ou avec une formule ?

En vous remerciant par avance,

Bonne journée,
 
Solution
Bonjour albatore78,
J'ai l'impression que la position du résultat se fait en mode "graphique" et que l'on ne définit pas cette dernière de manière habituelle (ex : E14) . Et du coup je ne vois pas comment on fait pour dire que le résultat doit être dans une case précise.

Il n'y a pas grand chose à faire mais quand même, un minimum ! (Voir le fichier)

2020-09-24_080232.jpg

Dudu2

XLDnaute Barbatruc
Bonjour,
C'est quoi la saisie semi-automatique ?
La complémentation automatique de la saisie sur la base des items de la liste prédéfinie ?
Le problème est qu'on ne sait pas ce qui se passe dans la cellule tant que la saisie n'est pas validée.
Alors à part intercepter les touches du clavier, ce qui est possible mais lourd, je vois pas trop ce qu'on peut faire sans utiliser, comme je viens de le voir dans les message de PatrickToulon, une ComboBox par exemple.
 

albatore78

XLDnaute Nouveau
Bonjour Patricktoulon et Dudu2,

Ce que je souhaite faire, c'est saisir des caractères dans un champs et qu'il me fasse remonter uniquement les valeurs qui contiennent ces derniers. En sachant qu'en aucun cas l'utilisateur ne peut ajouter de valeur n'appartenant pas à la liste.

Pourquoi je ne suis pas fana de mettre des objets : sur cette page, j'ai une dizaine de champs que l'utilisateur doit remplir et cela fonctionne très bien. On passe d'un champs à l'autre juste avec la flèche vers le bas et des contrôles pour chaque liste avec une validation des données. Une fois qu'ils sont remplis, j'ai une macro qui tourne pour copier l'ensemble de ces résultats dans une autre page. Cependant, j'ai une liste qui est assez longue et c'est pour ça que j'aurai voulu trouver une solution.

L'objectif est de faire un minimum de code car lorsque quelqu'un va reprendre le travail derrière moi ce n'est pas sûr qu'il veuille mettre les mains dans le code. A la base mon métier est dans les ressources humaines :cool: .

Si la seule solution est de passer par un objet dans ce cas là, pourriez-vous m'indiquer comment il faut faire ? De plus, peut-on passer dans l'ordre logique des lignes et de la position de cet objet qui se trouve au milieu des autres champs ?

En vous remerciant,

Bonne soirée,
 

albatore78

XLDnaute Nouveau
Bonjour,
Ci-joint un fichier diminué. La liste qui pose problème est la liste 4 car pour l'instant il y a 80 valeurs et on devrait monter à plus d'une centaine. Les autres sont composées d'une dizaine de valeur grand maximum.
En vous remerciant,
 

Pièces jointes

  • Version a envoyer.xlsm
    47.3 KB · Affichages: 21

patricktoulon

XLDnaute Barbatruc
Bonjour @Dudu2
ben va y j'observe
pour info c'est possible avec un seul textbox sans combo

au select de la cellule
liste de validation entiere
et textbox sur cell
event change du textbox
on re crée une liste de validation avec seulement les choix commençant par ou contenant la valeur du textbox

sinon une seul combo et jouer sur le matchentry et refaire la list et dropdown
position sur cel au select change pareil que le textbox
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Je vois pas trop ce que tu veux faire en utilisant une cellule et une TextBox en même temps.

Une ComboBox qui est par défaut en AutoWordSelect me semble hyper simple à mettre en place.
A moins que la demande soit différente d'une autocomplétion auquel cas il faut expliquer en détail ce qui doit être proposé sur une saisie.
 

Pièces jointes

  • Classeur1.xlsm
    20.6 KB · Affichages: 23

albatore78

XLDnaute Nouveau
Bonjour @tous les 2 et merci pour votre soutien.
En faisant par cette méthode, la personne qui va effectuer la saisie doit connaître exactement le début de chaque occurrence. Y a-t-il une possibilité pour que le texte recherché soit au milieu des libellés ?
En vous remerciant,
 

Dudu2

XLDnaute Barbatruc
Y a-t-il une possibilité pour que le texte recherché soit au milieu des libellés ?

Si ce n'est pas seulement de l'autocomplétion, ça devient plus compliqué car la ComboBox seule peut répondre au besoin en modifiant sa liste mais n'affiche la liste qu'avec un clic sur la flèche. Or je suppose que l'utilisateur doit voir d'emblée (sans clic) l'ensemble de la liste correspondant à la saisie pour éventuellement choisir le mot qui lui convient.

Perso je ferais ça avec une TextBox pour la saisie et une ListBox éventuellement dynamique pour l'affichage et la sélection du terme. Ou mieux un UserForm pour être plus flexible. Je peux essayer...

Tu pourrais fournir la liste des termes ?
A partir de combien de lettres saisies faut-il proposer des termes ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 848
Membres
103 004
dernier inscrit
ponas