XL 2016 Créer une liste déroulante qui active une macro

Bono13

XLDnaute Nouveau
Bonjour à tous,

J'aimerai créer une liste déroulante pour laquelle la macro souhaitée s'activerait à chaque fois que je changerais de nom dans la liste.
J'ai essayé d'insérer une liste déroulante via le développeur mais je dois mal m'y prendre puisque cela ne marche pas.
En gros l'objectif ici est d'activer la macro "Liste_deroulante" pour chaque nom de la liste: chaque nom de la liste représente un onglet dans lequel je vais chercher une colonne d'infos, la colonne B, pour la copier dans mon onglet "Base" et ainsi obtenir d'autres infos, dépendantes de cette colonne B, à analyser via une fonction INDIRECT. (Le système est simplifié dans le fichier test pour plus de clarté).
Le tableau "Base" est également redimensionné en fonction du nombre de lignes comprises dans chaque onglet.
Quelqu'un aurait une piste pour m'aider à créer une liste déroulante dont dépendrait toujours ma fonction INDIRECT et qui activerait la macro en changeant seulement de nom d'onglet?

Merci d'avance,
Bono.

PS: Je joins un fichier test pour aider à mieux visualiser le problème
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Ne pourriez vous vraiment pas tout mettre dans une seule liste, avec une colonne de plus pour la ressource ?
On ne gagne jamais à éclater des infos de mêmes formes dans plusieurs onglets.
Et dès qu'il commence à y avoir plusieurs contrôles incorporés dans une feuille, il faut arrêter de faire comme ça et concevoir un UserForm.
 

Bono13

XLDnaute Nouveau
Bonjour.
Ne pourriez vous vraiment pas tout mettre dans une seule liste, avec une colonne de plus pour la ressource ?
On ne gagne jamais à éclater des infos de mêmes formes dans plusieurs onglets.
Et dès qu'il commence à y avoir plusieurs contrôles incorporés dans une feuille, il faut arrêter de faire comme ça et concevoir un UserForm.
Bonjour,
Les onglets "Ressources" sont des extractions provenant de l'extérieur. De plus je présente ici un onglet base extrêmement simplifié avec seulement 2 colonnes, quand cet onglet doit en présenter une cinquantaine dans le fichier originel. Y rajouter une colonne avec pour indiquer le fichier ressource dont sont tirés les identifiants et quantités ne ferait que compliquer encore sa lecture! Enfin, cet onglet "base" sert de socle à une série de test pour lesquels il ne serait absolument pas pratique de devoir perpétuellement appliquer des filtres pour ne conserver que certaines données en fonction de l'onglet ressource concerné.

J'avais pensé à une chose simple: combiner la liste déroulante déjà présente en C7 avec un bouton contrôle de formulaire à côté, que j'activerai à chaque changement d'onglet ressource dans la liste déroulante. Toutefois je suis persuadé qu'il est possible de combiner les deux dans un seul userform, avec l'activation automatique du code à chaque changement de nom dans la liste de l'userform.
 

Dranreb

XLDnaute Barbatruc
OK si c'est une importation brute, mais on pourrait quand même l'intégrer par macro à une base unique, si les colonnes sont les mêmes partout.
Après, pour les UserForm, j'ai défini un objet ComboBoxLiées qui permet d'extraire un ensemble de lignes comportant les mêmes valeurs à certaines colonnes selon des choix (ou des frappes) effectuées dans un ordre quelconque dans plusieurs ComboBox. Mais il n'est pratique, et ne s'occupe entièrement dans son coin de leurs List et de la gestion des choix, que si tout est dans un seul onglet.
 

Bono13

XLDnaute Nouveau
J'ai trouvé une solution plus simple:
dans le code de ma feuille "base:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Application.Intersect(Target, Range("C7")) Is Nothing Then
Call Liste_Deroulante
End If
End Sub

Avec cette macro, quand je clique sur la cellule C7, ma macro s'active. L'idéal aurait été qu'elle s'active dès que je change de nom, ce qui hypothétiquement aurait pu me permettre d'envisager de faire une macro personnalisée par nom mais c'est mieux que rien!
 

mutzik

XLDnaute Barbatruc
bonjour la foule

dans une combobox ou une liste, on peut la lier à une cellule et ensuite intercepter par worsheet_change (+ intersect)
et lancer la macro
 

mutzik

XLDnaute Barbatruc
re,
tu crée ta liste
dans les propriétés de cette liste, il y a linkedcell (cellule liée)
cette cellule recoit la valeur que tu sélectionnes dans la liste
ce qui produit un évènement worksheet_change qu'il suffit de traiter
 

Fichiers joints

Bono13

XLDnaute Nouveau
Ca t'ennuierait de faire un exemple de code parce que là je vois absolument pas ce que tu veux dire! Je suis désolé mais tu parles à un novice de vba
 

Bono13

XLDnaute Nouveau
Au temps pour moi je n'avais pas vu! Ok ça marche parfaitement merci beaucoup
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas