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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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.
 
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.
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

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.
 
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

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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
668
Réponses
3
Affichages
751
Retour