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

XL 2016 Création aléatoire menu injecté dans liste déroulante

Philonce

XLDnaute Nouveau
Bonjour à tous,

j'aimerais créer un fichier assez complexe, mais la base de mon fichier serait de pouvoir généré aléatoirement des menu via la fonction aléa entre borne. Ensuite cela sera dans des listes déroulantes. J'y arrive au début, sauf que j'ai des doublons et ca je ne veux et surtout lorsque je change une liste, tout change et surtout mes formules disparaissent. Je voudrais que les menus soient générés aléatoirement, si ca me plait ok, sinon je modifie une liste, mais je ne sais pas comment m'y prendre.
J'ai besoin d'aide svp.
J'ai utilisé ceci comme formule
VB:
=INDEX($I$2:$I$6;ALEA.ENTRE.BORNES(1;5))
Et je vous joint mon fichier.

Merci d'avance
 

Pièces jointes

  • Menu-Courses.xlsx
    10.3 KB · Affichages: 14

Philonce

XLDnaute Nouveau
Bonjour ernest-92,

merci pour ton approche, mais comment génères-tu de nouveaux choix si tu n'es pas satisfait ? Ensuite, il n'y a pas les listes déroulantes. Par contre je vois l'approche que tu as voulu tenter et je t'en remercie.
Actuellement, la version de Dranreb me convient beaucoup mieux. D'ailleurs @Dranreb , j'ai encore essayé d'adapter un peu plus le visuel de ce fichier et j'ai modifié le code car je ne veux rien sur la première feuille.
J'ai testé l'ajout de menu et cela fonctionne très bien. J'ai juste modifié Activesheets par Sheets("BD") dans ton code.
Par contre, j'aurais voulu déplacer le listing de la première feuille, mais là j'ai une erreur (car ne commence pas à la cellule renseignée, mais si je modifie par 2 to 8 j'ai encore le debug.

Que dois-je modifier si je veux déplacer ce tableau afin de mettre un titre un en-tête, une image etc ??

Merci d'avance,
 

Pièces jointes

  • ListeAléatPhilonce(1).xlsm
    48.6 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Personnellement je répugne à consulter les collections Sheets ou Worksheets dans les macros, Je préfère accéder directement aux objets Worksheet implantés par l'application hôte, comme ça on peut renommer les feuilles si on veut sans que ça perturbe les macros. Bien entendu je renomme les objets Worksheet, qui en assument la représentation auprès de VBA, d'un nom mnémonique commençant généralement par Wsh, car Feuil1, Feuil2 et Feuil3 ça ne signifie rien qui puisse aider à s'y retrouver.
Attention le code de l'objet Worksheet Feuil1 (Menu) est muni d'une Sub Worksheet_Change qui calcule les menus écartés. Il faudra déplacer ce code dans celui de celle qui subira les modifications.
La propriété Value d'un Range de plusieurs cellule est un tableau dynamique à 2 dimensions, toujours basé 1, quel que soit la position dans la feuille de la cellule haut gauche de la plage qu'il représente.
 

Philonce

XLDnaute Nouveau
Comment faire alors pour avoir une belle présentation sur une page et caché tout ce qui n'est pas nécessaire @Dranreb ?
J'ai essayé de modifier le premier, mais du coup plus rien ne fonctionne. Cfr image. Je voudrais une présentation un peu raffinée dans ce genre.
Le problème plus rien ne fonctionne.
Donc j'ai repris ton fichier initial en changeant juste 2-3 truc, mais je suis loin du résultat.

Peut-tu m'aider stp ?

Bien à toi,
 

Pièces jointes

  • ListeAléatPhilonce(1).xlsm
    114.8 KB · Affichages: 8
  • ListeAléatPhilonce.xlsm
    108.6 KB · Affichages: 3
  • Test Menu.png
    628.6 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
Il manque la validation de données Liste avec comme source le tableau Écartés.
Le reste me semble fonctionner.

Ah non, pas tout à fait: la Worksheet_Change n'a pas été corrigée en conséquence :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'   If Intersect([B1:B7], Target) Is Nothing Then Exit Sub
   If Intersect([E11:E17], Target) Is Nothing Then Exit Sub
   Écartés
   End Sub
Au cas où vous changiez encore l'emplacement vous auriez intéret à donner un nom dans le classeur à cette plage E11:E17 et dans la macro spécifier ce nom entre les crochets.

Ah et puis [B1] c'est plus bon non plus dans la Sub Tirer() du Module1. Le même nom si vous en mettez un conviendrait, et plus besoin de resize derrière.
 

Philonce

XLDnaute Nouveau
Rebonjour à tous,

voilà le résultat que je viens de terminer. Alors, il me reste la BD à compléter au fur et à mesure, mais je pense être au résultat que je cherchais.

Qu'en pensez-vous ? Pensez-vous que je pourrais encore l'améliorer ?

Merci encore à @Dranreb
 

Pièces jointes

  • ListeAléatPhilonce.xlsm
    120.6 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
Je joins en attendant ma version car je ne peux pas ouvrir le votre en même temps vu qu'il porte le même nom.
Après j'ouvre le votre.

Oh là, ça a beaucoup changé dites donc !
Mais mettez donc des noms dans le gestionnaire de noms pour conférer aux macros une indépendance du code par rapport à l'mplacement des données.
 

Pièces jointes

  • ListeAléatPhilonce.xlsm
    37.3 KB · Affichages: 6

Philonce

XLDnaute Nouveau
Bonjour à tous,

@Dranreb , je me pencherai sur le problème des "noms". Vous voulez que chaque tableau soient renommés en fait ? Ou plutôt que chaques colonnes soit nommées ?
Dois-je regarder le code source et regarder ou des cellules sont indiquées pour modifier ensuite en noms pour que cela devienne dynamique.

C'est bien ca ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Non. Seulement les plages mentionnées par leur adresse dans le code, en vue de l'y remplacer par ce nom.
Je ne veux plus y voir [B1:B7] mais [MenusSem] par exemple.
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
563
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…