Difficulté: Avancé
Ustensiles: Excel
Ingrédients: DECALER, EQUIV, NBVAL, SOMMEPROD, SI, STXT, TEXTE, Validations de données
Bases requises: Fonctions avancées d’Excel
Liste déroulante dynamique dans Excel
FONCTION DECALER
Avant tout, voici un petit schéma qui explique la fonction DECALER, fonction centrale de la méthodologie.
DECALER(réf, lignes, colonnes, [hauteur], [largeur])
- réf Obligatoire. Représente la référence par rapport à laquelle le décalage doit être opéré. L’argument réf doit être une référence à une cellule ou à une plage de cellules adjacentes ; sinon, la fonction DECALER renvoie la valeur d’erreur #VALEUR!.
- lignes Obligatoire. Représente le nombre de lignes vers le haut ou vers le bas dont la cellule supérieure gauche de la référence renvoyée doit être décalée. Si l’argument lignes est égal à 5, la cellule supérieure gauche de la référence est décalée de cinq lignes en dessous de la référence. L’argument lignes peut être positif (c’est-à-dire en dessous de la référence de départ) ou négatif (c’est-à-dire au-dessus de la référence de départ).
- colonnes Obligatoire. Représente le nombre de colonnes vers la droite ou vers la gauche dont la cellule supérieure gauche de la référence renvoyée doit être décalée. Si l’argument colonnes est égal à 5, la cellule supérieure gauche de la référence est décalée de cinq colonnes vers la droite par rapport à la référence. L’argument colonnes peut être positif (c’est-à-dire à droite de la référence de départ) ou négatif (c’est-à-dire à gauche de la référence de départ).
- hauteur Facultatif. Représente la hauteur, exprimée en nombre de lignes que la référence renvoyée doit avoir. L’argument hauteur doit être un nombre positif.
- largeur Facultatif. Représente la largeur, exprimée en nombre de colonnes que la référence renvoyée doit avoir. L’argument largeur doit être un nombre positif.
Si la cellule D2 n’est pas vide,
Alors
Il faut prendre tous les prénoms qui commencent par la valeur de la cellule D2
DECALER(Premier_prenom;EQUIV(D2& »* »;Prenoms;0)-1;;SOMMEPROD((STXT(Prenoms;1;NBCAR(D2))=TEXTE(D2; »0″))*1))
Sinon
nous prenons la liste complète (Prenoms).
Explication de la fonction
DECALER(Premier_prenom;EQUIV(D2& »* »;Prenoms;0)-1;;SOMMEPROD((STXT(Prenoms;1;NBCAR(D2))=TEXTE(D2; »0″))*1))
En reprenant les caractéristiques de la fonction DECALER, nous avons donc:
DECALER(réf, lignes, colonnes, [hauteur], [largeur])
réf :Premier_Prenom
lignes (Décalage vertical): EQUIV(D2& »* »;Prenoms;0)-1
colonnes (Décalage horizontal): n/a
Hauteur :SOMMEPROD((STXT(Prenoms;1;NBCAR(D2))=TEXTE(D2; »0″))*1)
Largeur: n/a
Décalage vertical:
L’objectif est de trouver le premier prénom de la liste qui commence par la valeur de D2. Pour cela, on utilise la fonction EQUIV qui permet de chercher une valeur (ici D2& »* ») dans une liste (Prénoms). EQUIV renvoie la position relative d’un élément dans une matrice.
Le caractère « * » permet de spécifier « commence par ».
Enfin, on enlève ensuite 1 au résultat car le titre « Prénom » (en A2) ne doit pas être pris en compte.
Décalage horizontale:
L’objectif est de trouver le nombre de prénoms qui commencent par la valeur spécifiée en cellule D2.
On peut le formuler ainsi:
Combien de fois l’égalité cellule D2 est égale à n premières lettres de chaque prénom (avec n = nombre de caractères de D2) ?
En utilisant la formue SOMMEPROD, on vérifie le nombre d’égalité qu’on multiplie ensuite par 1.
Cela nous donne la hauteur de la sélection
J’espère que cette fonctionnalité vous a plus, n’hésitez pas à me faire part de vos commentaires ou questions…
Bonjour, votre article m'a servi à merveille.
Après avoir terminé la modification de mon fichier, je suis cependant très embêté : je comptais en effet l'envoyer à plusieurs personnes, afin qu'elles n'aient que leur nom à remplir dans une liste déroulante (comme en D2 dans votre fichier exemple), et que tout un tas de données s'affichent en rapport au prénom choisi.
Jusque là, tout va très bien.
Mais dès que je protège la feuille pour que ces personnes ne me modifient pas les cellules de formules par mégarde, je constate que la saisie prédictive ne fonctionne plus ! (en D2 dans votre exemple).
Auriez-vous une astuce pour que celle-ci fonctionne aussi bien en mode protégé?
Merci d'avance et félicitations pour ce super tuto.
Bonjour,
Tout d'abord, je vous remercie pour le compliment.
Pour votre problème, le premier point à vérifier concerne la protection de la cellule. Avez-vous bien décocher l'option "Verrouillée" dans format de cellule (bouton droit de la souris sur la cellule) puis onglet Protection ?
J'ai testé de mon côté et cela fonctionne mais avec une contrainte: Après avoir saisi les première lettres, il faut quitter la cellule (TAB ou ENTREE) afin de pouvoir choisir dans la liste déroulante. J'avoue que cela n'est pas des plus pratiques mais je tâcherai de regarder si une solution à ce problème existe.
Bonne journée,
Jérémy
Merci tout d'abord de votre réponse si rapide.
Effectivement, en quittant la cellule par le bouton entrée, on peut y revenir pour choisir dans la liste déroulante.
Hélas, les personnes à qui je compte envoyer ce fichier ne connaîtront pas l'astuce, et elles perdent donc l'intérêt de l'écriture prédictive (et j'avoue ne pas vouloir les faire crouler sous les informations étant donné mon fichier à envoyer).
Si vous trouvez une solution plus simple pour accéder directement aux choix correspondants aux n premières lettres entrées, je suis preneur !
Merci en tout cas.
Bonjour,
J'ai trouvé la solution au problème. Lorsque vous souhaitez protéger la feuille (Ruban Révision -> Protéger la feuille), une boîte de dialogue s'ouvre avec de nombreuses cases à cocher. Il faut avoir la case cochée pour "Modifier les objets".
J'ai testé et cela fonctionne. Attention toutefois, cela permet aux utilisateurs de modifier tous les objets (images par exemple).
Bonne continuation,
Jérémy
Bonjour,
effectivement cela résout le problème, vous avez bien trouvé la solution.
Hélas, ayant quelques images sur mon fichier Excel, je préfère garder une liste déroulante sans "écriture prédictive" et en étant sûr que rien ne sera modifié.
Tant pis.
Merci en tout cas.
bravo ! c’est un super tuto 🙂 merci pour ce partage
Pourriez-vous republier le fichier exemple SVP car le lien est en erreur.
Bonjour Mat,
Désolé de répondre aussi tardivement. J’ai donc mis à jour le téléchargement du fichier.
Vous pouvez donc retourner sur l’article et télécharger le fichier:
https://cooking-excel.com/2012/12/liste-deroulante-dynamique-dans-excel/
Bonne continuation sur Cooking-Excel !
Jérémy.