Créer une liste déroulante faisant référence à une plage

Bonjour à tous, je souhaiterais créer une liste déroulante faisant référence à une plage située dans une autre feuille.

Le problème est que je souhaite créer plusieurs listes de ce type et les références seront de tailles et à une position variable.

Voici l'extrait du code sachant que cc1 est la cellule où sera la liste :

With cc1.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlGreater, Formula1:="=???"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

Je souhaiterais mettre dans les points d'interrogations une référence vers une liste de mots placés en colonne sur la feuille 2. Sachant que j'ai créé une variable "cc2" (pour cellule courrante) de type Range située juste au dessus de la liste en question et que cette variable se déplace à chaque appel de cet extrait de code. Il suffirait donc de faire un truc du style :

cc2.Select

Range(Selection, Selection.End(xlDown)).Select

Et mettre "Selection" à la place des ??? si vous voyez ce que je veux dire mais je doute que ça marche (en fait je le sais j'ai déjà essayé )

Je suis totalement débutant en VBA et j'ai pris l'habitude d'une logique d'autres langages de programmation du coup je pense que ma méthode globale n'est pas optimale depuis le début mais j'ai déjà passé beaucoup de temps à la mettre en place et il ne me reste au final que ce problème pour que tout marche..

Merci pour votre aide

joins un fichier, avec quelques explications supplémentaires dans le fichier

Bonjour, voici un classeur exemple.

Imaginons que je suis un vendeur à la fnac. Mon objectif est de générer des codes produits en fonction des caractéristiques du produit.

J'ai imaginé la macro gen() qui permettrait d'adapter le tableau de la feuil 1 en fonction du produit choisi.

Je suis bloqué quand je souhaite créer une liste pour chaque caractéristique.

La création du code produit se fera plus tard je vais me débrouiller.

J'espère que cela n'est pas trop confus et que vous pourrez m'aider

EDIT Fichier précedent pas bon voici le nouveau :

11classeur4.xlsm (31.43 Ko)

En fait ça m’embêtait de mettre le fichier entier vu que le problème est très spécifique et ne représente pas tout mais si vous avez des avis sur le reste et des conseils je suis preneur.

Désolé si le code part un peu dans tous les sens je le mettrai au propre au moment de le remettre. J'avais une idée en tête très particulière sur comment procéder du coup c'est peut être pas hyper clair.

Bonjour,

Un des problèmes est que tes plages sont discontinues ta "base de donnée" comporte des trous voire même pour certains produits de colonnes vides :

A minima, il faudrait que chaque première ligne d'en-tête produit ne comporte pas de cellule vide.

Si chaque plage produit possède un en-tête tu peux écrire

Sub test()
Dim maplage As Range
Set maplage = Range("A8").CurrentRegion
MsgBox maplage.Address
'longue suite d'opération...
End Sub

A+

Bonjour,

Un des problèmes est que tes plages sont discontinues ta "base de donnée" comporte des trous voire même pour certains produits de colonnes vides :

A minima, il faudrait que chaque première ligne d'en-tête produit ne comporte pas de cellule vide.

Si chaque plage produit possède un en-tête tu peux écrire

Sub test()
Dim maplage As Range
Set maplage = Range("A8").CurrentRegion
MsgBox maplage.Address
'longue suite d'opération...
End Sub

A+

Merci pour ta réponse, je vais essayer d'harmoniser tout ça mais les blancs me servent justement à distinguer les produits.

A droite de CD se trouvent les caractéristiques du CD comme son type, sa couleur et son année mais ça ne correspond pas aux caractéristiques du DVD qui sont son genre, le nombre de DVD.. Du coup j'ai volontairement séparé mais si tu me conseille de tout mettre en continue, comment je distingue les plages les uns des autres ?

Puis surtout les blancs me servent à pouvoir ajouter des caractéristiques après comme un nouveau genre de musique "Electro" par exemple

Personne ne sait comment faire ?

Ma question reste simple. Comment faire référence en une seule ligne à une plage de données par exemple grâce à son nom ici :

Imaginons que ma plage s'appelle "genre_de_musique". Comment puis-je le mettre à la place des ??? ?

With cc1.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlGreater, Formula1:=???

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

Toussa est un peu nébuleux :

Je suppose que ta question fait référence à des listes en cascade mais cela suppose quand même une architecture conçue pour.

A+

Rechercher des sujets similaires à "creer liste deroulante faisant reference plage"