Listes déroulantes en cascade – gérer des noms longs avec espaces (2/3)

800px-BurneyFallsDeuxième épisode de la série sur les fantastiques listes déroulantes en cascades !

Dans l'épisode précédent, on a vu comment créer des listes en cascades. On va reprendre ici le même principe, mais pour gérer des listes contenant des espaces.

Cliquez ici pour accéder au fichier de la formation.

Par exemple, supposons que gériez un centre de formation et que vous vouliez choisir un domaine de formation, qui va ensuite nous donner une liste de formation possible.

Les domaines de formation étant un peu complexes, vous allez avoir des noms comme :

- Formation de base sur Excel

- Formation avancée sur Excel

Et ensuite, on va retrouver un certain nombre de formations pour chaque domaine.Le but étant d'arriver à ceci :

Le problème est que la fonction Indirect ne pourra pas lire ces noms de domaine, car ils contiennent des espaces.

Une solution possible consiste donc à ajouter dans la liste des domaines, le nom du domaine sous la forme d'un code, ce qui permettra de s'y retrouver.

1/ On aura ainsi la table suivante :

2/ Il faut ensuite à ajouter les noms F_Base_Excel et F_Avancee_Excel au fichier pour les types de formation, ici pour F_Base_Excel :
Sélectionnez E2:A4, dans la zone de noms, tapez F_Base_Excel et validez par entrée.
De même pour la plage G2:G4.

Et ici pour F_Avancee_Excel

3/ On va ensuite ajouter une formule un peu complexe qui va permettre de retourner le code formation, qu'on utilise ensuite dans une formule indirect pour la suite.

Et la formule est la suivante pour la cellule D3 (avec Liste étant le nom de la feuille contenant les listes de départ):

=INDIRECT(INDEX(Liste!$B$2:$B$3;EQUIV(C3;Liste!$A$2:$A$3;0);1))

4/ Vous pouvez donc maintenant utiliser un nom complet avec des espaces pour ensuite changer la liste des formations appartenant à ce domaine.

A bientôt pour le 3e épisode!

Gaëtan

Listes déroulantes en cascade – Introduction (1/3)

450px-Cascades_d'OuzoudBonjour à tous,

La création de listes en cascade permet de gérer une liste déroulante qui se modifie en fonction du choix d'une autre liste déroulante.

Cliquez ici pour accéder au fichier de la formation.

Par exemple, vous voulez choisir une marque de voitures pour ensuite accéder aux modèles correspondants, ou encore vous voulez choisir un type d'aliment pour ensuite aller à la liste des aliments correspondants :

Choix des fruits :

liste_en_cascade_1

Choix des légumes :

liste_en_cascade_2

Ces listes dynamiques en cascade se créent de la manière suivante :

1/ Créez trois listes dans une feuille séparée. La première liste va avoir les items suivants : Fruits et légumes. Puis, la liste détaillée des fruits, puis la liste des légumes.

2/ Nommez chacune des listes (à gauche de la zone de formule, vous avez la zone de nom), idéalement après avoir défini un tableau par liste. Par exemple, la liste des fruits est nommées Fruits et la liste des légumes est nommée Légumes. Ça nous donne ceci:

liste_type_aliments

3/ Dans une nouvelle feuille, par exemple en A2, choisissez la première liste, via Données - Validation - Liste et en mettant la référence correspondante (ici Type_Aliments). Donc, vous aurez une liste avec le choix Fruits, Légumes.

4/ Dans une autre cellule qui va recevoir le choix du produit, choisissez Données - Validation - Liste, et tapez =INDIRECT(A2). La fonction indirect va renvoyer la plage nommée correspondant à A1, donc la plage Fruits ou la plage Légumes.

liste-dynamiques-donnees-validation-indirect

C'est fini !

Gaëtan

Votre opinion pour mon prochain CD de formation sur VBA avancé ?

Bonjour à tous,

En parallèle au développement soutenu de FormXL Pro -  pour les mises à jour, cliquez ici - je vais enregistrer le prochain volume sur VBA avancé. Pour cela, j'ai besoin de votre aide 🙂

Voici cinq idées de formations possibles pour les prochains volumes de VBA avancé :

A - Les contrôles de listbox en profondeur

Les listbox permettent de gérer énormément d'aspects et sont beaucoup plus puissantes qu'on pourrait croire à première vue.
Dans ce cours, nous allons voir comment créer un gestionnaire avancé de vue personnalisée (tri, ordre des colonnes, etc.) ainsi qu'un hyper navigateur pour des fichiers avec beaucoup de feuilles.
Au programme : l'utilisation des multi-colonnes, le déplacement par souris à l'intérieur d'une listbox, l'ajout de boutons de sélection, désélection et d'inversion de sélection, la sélection simple ou multiple, etc.

B - La création d'un graphique dynamique

Ce graphique va s'ajuster automatiquement en fonction de la sélection en cours.
Au programme : le déplacement d'un graphique en fonction de la position de l'userform, les procédures événementielles, le changement du style de graphique, etc.
Réalisation en collaboration avec Dominique Handelsman.

C - La connexion à des tables multiples

Soit en utilisant des liaisons entre tables (par exemple entre une table clients et une table factures), soit via la réunion de tables, par exemple ajouter les unes en dessous des autres, des feuilles contenant des tables mensuelles.
Au programme : les bases du SQL sur Excel, création automatisée de connexions SQL en VBA, ajout d'un formulaire de contrôle de cette connexion avec sélection des fichiers et des tables liées, etc.

D - Optimisation de filtres de recherche et d'extraction

Il s'agit ici de concocter un mini-moteur de recherche pour vos bases de données.
Au programme: extraction des informations suivant des filtres, filtres dynamiques s'ajustant dès qu'on tape une lettre, optimisation du code VBA, comparaison de plusieurs approches, gestion des tableaux -Array(), etc.

E - 77 trucs à faire avec Vba que vous ne pouvez pas faire avec Excel

Il s'agirait ici de répertorier des trucs en VBA qui ne sont pas faisable directement sous Excel. Ca demanderait plus de temps à créer, mais ca pourrait donner une belle collection de codes pour optimiser Excel.

J'aurais donc beaucoup aimé votre retour pour savoir si

- vous vouliez voir d'autres sujets traités et

- dans quel ordre de priorité vous voudriez voir ces sujets traités.

N'hésitez pas à laisser un commentaire ci-dessous.

A bientôt.

Gaetan