Listes se mettant à jour automatiquement

J'ai une liste dont les données sources sont dans une colonne. Comment faire pour que tout ajout dans cette colonne se répercute dans ma liste ?

Il faut que tu nommes ta plage de données sources avec la fonction décaler (tu trouveras de l'aide sur cette fonction sur cette page et dans celle-ci).
Si par exemple tes données sont sur la page "codes" dans la colonne A avec en A1 le titre de ta liste (qui ne doit pas apparaitre dans les éléments de ta liste), et les différents éléments à inclure en A2:A20, sélectionne A2, puis menu Insertion/nom/définir.
Choisis un nom pour ta liste, disons "maliste" et dans la zone en bas tu écris :
=decaler($A$2;;;nbval($A:$A)-1) puis tu cliques sur ajouter.
Si tu recliques dans la formule en bas, tu verras que dans ton classeur toutes les données entre A2 et A20 sont entourées d'un pointillé.
Tu vas maintenant utiliser le nom "maliste" comme source de données. Tu peux par exemple dans une une liste de validation (menu données/validation), mettre comme source de données
"=maliste" (sans les guillemets).
Toutes les données que tu ajouteras sur la page codes en dessous des valeurs précédentes seront automatiquement ajoutées à ta liste de choix.
De même tu peux utiliser cette astuce dans un formulaire (userform) pour alimenter une listbox.
Dans le userform_initialize (ou ailleurs suivant tes besoins), tu écris malistbox.rowsource=("codes!maliste") (respecte la ponctuation)
L'intérêt c'est qu'une fois ceci défini, tu n'as plus à modifier ton code si tu ajoutes des éléments. Là encore tout ajout de données (ou supression d'une cellule) se répercute tout seul dans ton userform.
Attention ! il ne faut absolument pas :
- Avoir de trous dans ta liste (donc pas d'effacement de valeurs, il faut supprimer et décaler les cellules vers le haut)
- Ajouter d'autres choses dans la colonne A. Ou alors il faut ajuster la formule de décaler en enlevant le nombre de cellules à ne pas prendre en compte.

Auteur(s) : 

Commentaires

Bonjour,

Pour mes besoins (Petite entreprise) je suis en train développer un formulaire de saisie d'offre et d'édition: J'ai un problème:

- la fonction décaler sous Mac à les arguments dans un ordre différents que celui de votre exemple: et par ailleurs semble présenter un bug car ayant définit un Name avec la formule sans succès, j'ai programmé Decaler dans une cellule est le résultat est volatile?

Etes vous au courant? Y a t il une solution?

Merci

"Bonjour

Il y avait un problème d'édition sur cette page, les références avaient sauté dans la formule. C'est maintenant corrigé. Je n'ai pas de mac sous la main pour tester mais de ce que je sais les paramètres de la fonction décaler sont exazctement dans le même ordre dans les versions mac et PC. .

Que veux tu dire par j'ai programmé décaler" dans une cellule ?

Tu définis ta plage dynamique, par exemple "maplage", avec insertion/nom/définir 

Par exemple pour utliser toutes les données qui sont sur la ligne 1 : = decaler($A$1;0;0;1;nbval($1:$1))

dans ta feuille tu écris =somme(maplage). 

Tout l'intérêt c'est justement que c'est une fonction dynamique. Si tu ajoutes des données dans la ligne 1, elles seront prises en compte automatiquement.

En tous cas avec ce qui était écrit avant que je ne corrige la page, je comprends que tu n'aies pas pu comprendre !"


Ce mois-ci sur Excelabo

- Pas de nouvelle page.
- 3 pages modifiées.