Bonjour à toutes et tous !!
J'ai créé un classeur Excel qui est commandé par divers Macros qui sont engagées par des clics de 12 boutons....
Je veux regrouper ces macros en 3 listes déroulantes :
Liste déroulante 1 pour choisir entre une ou deux semaines de portée "habituelles" de calculs précis de besoins (2 lignes).
Liste déroulante 2 pour choisir, pour des cas exceptionnels des durées qui porteraient au delà de ces deux semaines de 0 à 9 semaines supplémentaires... pour des calculs d'estimations de besoins (10 lignes)
Liste déroulante 3 pour déterminer le type de traitement qui peuvent s'imposer aux critères précédents (calculs de simulations de besoins; Elaborations de commandes mais aussi des actions indépendantes (Corrections d'inventaire; Livraisons; Ajout de lignes produit; Mise à jour de consommation ptrévisionnelle etc..)
Mon problème est donc, à chaque fois, de produire une liste déroulante dont chaque ligne est une macro qui démarre au clic de sélection.
Comment fait-on çà ???
Bonjour Pierre Jean !
Oui, j'ai bien là ,une liste déroulante mais qui ne répond pas à mon Pb qui dit, lui que ton 1 comme ton 2 ou ton 3 est le nom d'une macro. Si je remplace ces 1, 2 ou 3 par des noms de macros, celles-ci ne fonctionnent pas...
Merci pierrejean ! Merci Gégé 45550
J'ai enfin vu la seconde fenêtre...!! Ça doit être un des effets du confinement ! D'ailleurs, vous connaissez sans aucun doute l'expression : quant on est confiné on est confiné...
Pour tout dire, ta réponse pierrejean me convient très bien !! Merci Gégé de m'avoir mis le nez dessus !!
Il me reste pourtant à creuser ce que patricktoulon vient de me glisser .... et qu'il me convient de documenter...
re
préférez le .text (des fois que l'expression serait interprétée par excel) sait on jamais si les expression inscrites représentent des fonctions ou constantes excel ou VBA Application.Run Target.Text
re-bonjour,
petite précision qui semble évidente mais qui n'est pas forcément inutile : pour éviter que le code plante ou fasse n'importe quoi si un changement intervient sur une autre cellule que celle ou figure la liste de validation (en l'occurrence la cellule A1), il convient de modifier la macro dans feuil1 comme ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.Run Target.Text 'pour obéir à la dernère recommandation une fois de plus hyper pertinente de patricktoulon
End If
End Sub
Merci à patricktoulon !! J'avais fait ça comme ça et pour une raison qui m'est encore inconnue ça n'acceptait pas l'intitulé comme "macro". En reprenant les B A BA comme tu me l'a suggéré et en étant , cette fois plus attentif... ça marche ! MERCI à vous trois !!!