• Initiateur de la discussion Initiateur de la discussion Kersijus
  • 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 !

K

Kersijus

Guest
Bonjour à tous,

Je souhaiterais pouvoir récupérer la valeur d'une liste déroulante et la modifier via une macro. Est-ce possible ?

Par avance merci.

Cordialement.
 

Pièces jointes

Re : Liste déroulante

Bonjour Kersijus,

Exemple à adapter éventuellement :

Code:
Sub Zonecombinée1_QuandChangement()
Dim cf As ControlFormat, cel As Range, t$
With Feuil1 'CodeName de la feuille
  Set cf = .Shapes("Drop Down 1").ControlFormat
  Set cel = .Range(cf.ListFillRange).Cells(cf.ListIndex)
End With
t = InputBox("Entrez le nouveau nom :", "Modifier '" & cel & "'")
If t <> "" Then cel = t
End Sub
A+
 
Re : Liste déroulante

Merci pour votre aide. Néanmoins, sans vouloir abuser votre gentillesse, ne peut-on pas récupérer directement la valeur de la liste déroulante sans passer par les cellules qu'il utilise*? Via une formule du style*:
Code:
cf = Feuil1.Shapes("Drop Down 1").ControlFormat.Text
 
Re : Liste déroulante

Re,

Ca vous arrive de tester des codes VBA ???

Si j'utilise l'objet cel c'est parce qu'au poste #1 vous dites vouloir modifier la valeur de la liste.

Maintenant si vous voulez seulement connaître la valeur :
Code:
'-----
  valeur = .Range(cf.ListFillRange).Cells(cf.ListIndex)
  MsgBox valeur 'pour tester
A+
 
Re : Liste déroulante

Re,

Bon allez, plus simple :

Code:
Sub Zonecombinée1_QuandChangement()
Dim cf As ControlFormat, cel As Range, t$
With Feuil1 'CodeName de la feuille
  Set cf = .Shapes("Drop Down 1").ControlFormat
  Set cel = .Range(cf.ListFillRange)(cf)
End With
t = InputBox("Entrez le nouveau nom :", "Modifier '" & cel & "'")
If t <> "" Then cel = t
End Sub
A+
 
Re : Liste déroulante

Rebonjour,

Oui désolé, j'avais besoin des deux mais séparément. En fait je voulais surtout me défaire du «*.Range(cf.ListFillRange).Cells(cf.ListIndex)*» (les listes sont sur des feuilles séparées). J'ai utilisé la méthode suivante du coup*:
Code:
    Set cf = Feuil1.Shapes("Drop Down 1").ControlFormat
    MsgBox cf.List(cf.ListIndex)
 
- 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

  • Question Question
Microsoft 365 INDEX equiv
Réponses
1
Affichages
207
  • Question Question
XL 2016 liste
Réponses
10
Affichages
388
Retour