XL 2021 Liste dans liste

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour,
En PJ mon fichier "courses macro" qui contient 3 feuilles.
La première (Feuil1) contient ma liste de courses:
- colonne A = catégorie du produit (liste déroulante)
- colonne B = rayon où se trouve le produit affiche une liste déroulante lié à la catégorie.
Problème n°1 : Pour chaque choix dans la colonne A, afficher dans la colonne B la liste déroulante correspondant à la catégorie pour chacune des cellules A2 à A70.
- Colonne C et D : texte libre pour préciser l'article et sa quantité
- colonne E : permet de cocher le produit (x) pour l'ajouter au panier.
- colonne F : Précise l'emplacement du rayon sur le plan
Problème n°2 : Comment rattacher, pour chaque ligne, l'emplacement du rayon précisé dans le tableau de la feuille "Localisation" ?
La feuille "Localisation" précise la position du rayon concerné (dans mon exemple, seule la ligne "Technologie" est complétée.
La feuille "Plan" contient le plan du magasin (très incomplet pour l'instant...). Seul le rayon "Télévision" est associé à une référence géographique (A3) dont l'apparence change selon que le produit de la liste est sélectionné (x dans la colonne E) dans la cellule correspondant au produit (mise en forme conditionnelle).
Problème n°3 : Mettre le plan à jour en fonction du CHOIX(x)
Bien sûr, les propositions que j'ai formulées ne sont présentées qu'à titre d'exemple en Feuil1 (tableau J33:M50)

Pourquoi cet outil ? Étant malheureusement une personne dite à mobilité réduite, lorsque je fais mes courses, j'ai à cœur d'optimiser mon cheminement dans le magasin en fonction des points de collecte. J'arrive encore à faire mes courses, le charriot de courses faisant office de déambulateur à roulettes.:)

Merci d'avance de votre savoir et de votre aide
Pierre
 

Pièces jointes

  • courses macro.xlsm
    42.5 KB · Affichages: 18
Solution
Hello !
Alors là, je prends mon pied !
Tout fonctionne à merveille. Je me suis permis d'apporter quelques modifications à ton code pour faire plus joli...
- taille police par défaut du Plan= 9
- Bold = false
- Fond du tableau bleu
- Afficher les choix sélectionnés en Taille 11, Gras, Rouge et Fond jaune
Tu t'en doutes encore une fois, il m'a fallu bien comprendre tes étapes de programmation pour comprendre que selon les cas "Bold" n'était pas synonyme de Font.Bold (mais je suis content que ta proposition m'ait apportée tant de réponses et d'interrogations.
Il me reste un dernier petit problème que j'ai essayé de résoudre avant de t'embêter...
La mise en forme du Plan (T-PlanMagasin) recouvre bien sûr toute cette sélection et la...

vgendron

XLDnaute Barbatruc
Hello
Tu ne me croiras pas, VBA n'a pas du tout aimé
Si si, je dirais meme que c'est normal: VBA est comme l'utilisateur.. pour travailler sur une feuille.. il a besoin qu'elle soit déprotégée..
ce qu'on fait habituellement dans la macro
1ere étape: déprotection
2eme étape: les actions de la macro
3eme étape: Reprotection

pour le plan:
ca dépend un peu de comment tuvois la chose
le plan pourrait etre "simplement" une image en filigranne, sur laquelle tu mets les points de collecte
ca peut aussi etre des formes dessinées avec l'outil dessin

pour le plan du leclerc, tu peux peut etre prendre celui d'un leclerc "quelconque" ==> ils ont normalement a peu près tous la meme implantation..
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Hello

Si si, je dirais meme que c'est normal: VBA est comme l'utilisateur.. pour travailler sur une feuille.. il a besoin qu'elle soit déprotégée..
ce qu'on fait habituellement dans la macro
1ere étape: déprotection
2eme étape: les actions de la macro
3eme étape: Reprotection

pour le plan:
ca dépend un peu de comment tuvois la chose
le plan pourrait etre "simplement" une image en filigranne, sur laquelle tu mets les points de collecte
ca peut aussi etre des formes dessinées avec l'outil dessin

pour le plan du leclerc, tu peux peut etre prendre celui d'un leclerc "quelconque" ==> ils ont normalement a peu près tous la meme implantation..
Merci de ta réponse,
- Protection et déprotection : quel intérêt dans la mesure où l'action de la macro formate l'ensemble du tableau lorsqu'il est déprotégé, ce que je cherche à empêcher ?
- Outil Insertion/Formes : ça marche très bien et si j'étais assez souple, je me mordrais les orteils pour ne pas y avoir pensé ! C'est la solution que je vais adopter tout en adaptant le contenu des cellules de PlanMagasin au positionnement de ces insertions. SUPER!!!
- Plans de Leclerc en ligne : J'ai trouvé un plan (pas celui de Laval bien sûr). Son organisation est très différente de celle du Leclerc Laval (53000), elle même différente de celui de St Berthevin (53940) qui appartient pourtant au même propriétaire.

Merci encore de ton aide et de tes excellentes idées. J'ai donc beaucoup de travail et je ne te dérangerai plus avant d'avoir fini le job
A bientôt,
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonsoir,
Je t'avais envoyé une réponse mais il semble qu'elle ne soit pas passée. Il semble que le nombre d'échanges avec XLD soit limité. Je ne retrouve même plus ton dernier message dans lequel tu me proposais d'insérer des "formes", solution que je trouve la plus efficace et que je vais appliquer pour peu que Leclerc m'envoie le plan de masse de son espace magasin. Je ne manquerai pas de t'envoyer le fichier final :)

Bien cordialement,
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Oui, je parle bien de Vgendron XLDnaute barbatruc.
A la suite de ta réponse, j'ai pu constater que mes précédents messages étaient bien affichés (alors qu'il y a 1/4 d'heure, ça s'arrêtait hier aux environs de 13h30 (je n'ai pas noté l'heure précise).
Quoiqu'il en soit je tiens à te remercier et bien sûr Vgendron qui se reconnaitra.
Une dernière question d'un nul...
Comment fait-on pour mettre fin à une discussion ?
Bien cordialement,
Pierre
 

Staple1600

XLDnaute Barbatruc
Re

On ne peut pas mettre fin à une discussion.
(Seul un modérateur peut fermer une discussion)
Ce que peut faire celui qui a initié la discussion, c'est la passer en Résolu.
(ce que tu as déjà en marquant un de tes message comme Solution)
(cf le message#15)
 

Staple1600

XLDnaute Barbatruc
Re,

@Constantin
Un modérateur est un membre du forum qui en charge le respect de la charte du forum
Pour ce faire, il a des droits spéciaux
(suppression de messages, modification de message, clôture de discussion etc..)

NB: On ne peut mettre qu'un seul message comme une solution dans une discussion.
Et normalement, on ne marque pas comme solution un de ses propres messages mais le message qu'on estime être la meilleure réponse à sa question (ou celle qu'on préfère)

PS: Ce n'est pas une obligation mais une fonctionnalité offerte par Xenforo (le logiciel avec lequel fonctionne le forum Excel Downloads.
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonsoir JM,
Pour t'expliquer mon niveau... Je n'avais pas repéré en bas à gauche qu'il y a avait plusieurs pages à afficher. Donc, mille excuses et aussi mes plus plates envers XLD et Vgendron...
Tu affiches en fin de message "
Enjolivez votre code VBA : utiliser l'éditeur de code intégré
(ou les balises BBCODE suivantes:
VB:
Ici le code VBA
Merci pour le plaisir de nos yeux __________( ͡° ͜ʖ ͡°)

Si j'étais capable de comprendre, je crois que j'apprécierais, Pour l'heure, c'est du chinois ! (ou pire)
Bon, j'arrête là, te souhaites un bon dimanche et je retourne à mon poulet au curry.
Merci encore,
Pierre
 

Staple1600

XLDnaute Barbatruc
Re

@Constantin
Explication de ma signature
Ci-dessous voici comment s'affiche le code d'une macro VBA
Sub Macro1()
'Déclarations
Dim i, k, m
'Boucle
For i = 1 To 10
k = Cos(k * Rnd + i)
Next
m = k / Time * Day(Now)
'Affichage message
MsgBox Len(Left(m, 9)), 64, "Test"
End Sub

Et comment elle s'affiche en formattant le code
VB:
Sub Macro1()
'Déclarations
Dim i, k, m
'Boucle
For i = 1 To 10
k = Cos(k * Rnd + i)
Next
m = k / Time * Day(Now)
'Affichage message
MsgBox Len(Left(m, 9)), 64, "Test"
End Sub

C'est donc plus agréable pour les yeux, non ? ;)
 

Cousinhub

XLDnaute Barbatruc
Re

@Constantin
Explication de ma signature
Ci-dessous voici comment s'affiche le code d'une macro VBA
Sub Macro1()
'Déclarations
Dim i, k, m
'Boucle
For i = 1 To 10
k = Cos(k * Rnd + i)
Next
m = k / Time * Day(Now)
'Affichage message
MsgBox Len(Left(m, 9)), 64, "Test"
End Sub

Et comment elle s'affiche en formattant le code
VB:
Sub Macro1()
'Déclarations
Dim i, k, m
'Boucle
For i = 1 To 10
k = Cos(k * Rnd + i)
Next
m = k / Time * Day(Now)
'Affichage message
MsgBox Len(Left(m, 9)), 64, "Test"
End Sub

C'est donc plus agréable pour les yeux, non ? ;)
A un détail près, l'indentation...
OK, je [ ]-> :)
 

Statistiques des forums

Discussions
312 961
Messages
2 093 969
Membres
105 902
dernier inscrit
LPH