Sa fonctionne ! Sa fonctionne plus !

  • Initiateur de la discussion Initiateur de la discussion Rapheux
  • Date de début Date de début

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 !

R

Rapheux

Guest
Bonjour à tous !

Je voudrais affecté une liste de validation à une cellule par macro VBA.

Les items de la liste sont les valeurs d'une plage :

Cas 1 (plage définit sur la feuille active active) : Sa fonctionne
Range("B" & num_ligne).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=" & Range("K3:K4").Address

Cas 2 (plage définit sur une autre feuille) : la liste apparait avec des valeurs vide) : Sa fonctionen pas

Range("B" & num_ligne).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=" & Worksheets("Data").Range("K3:K4").Address

De même en utilisant la plage nommée !

Une idée ?

Je vous remercie d'avance,
Cordialement
Rapheux
 
Dernière modification par un modérateur:
Re : Sa fonctionne ! Sa fonctionne plus !

Salut,

C'est normal, tu passes l'adresse de ta plage donc "$K$3:$K$4" et donc quelque soit la feuille de la plage tu indiques dans ta liste la plage $K$3:$K$4 de la feuille courante (celle ou est la liste de validation).

Tu n'as pas d'autre solution que d'utiliser une plage nommer mais surtout pas en en passant l'adresse (comme tu as du essayer), ce qui revendrait au meme, mais en passant le nom de la plage nommer en parametre.

Comme ceci:
Code:
Range("B" & num_ligne).Validation.Delete 'Sinon, si elle existe deja tu auras un message d'erreur
Range("B" & num_ligne).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=[COLOR=Red]LeNomDeTaListeDeValeurs[/COLOR]"
J'espere que c'est assez clair 😛

++
Minick
 
Re : Sa fonctionne ! Sa fonctionne plus !

Bonjour,

comme dit Minick, il te faut passer par une zone nommée, si tu veux faire référence à une liste d'un autre onglet..

tu peux le faire ainsi :

Code:
Sheets("Data").Range("K3:K4").Name = "maliste"
With Range("B" & num_ligne).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=maliste"
End With

Bonne soirée
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
27
Affichages
2 K
adet ruireux
A
Réponses
11
Affichages
3 K
F
Retour