Salut.
Je suppose que tu travailles avec une version >= 2007. Dès lors, tu as intérêt à travailler avec des tables de données. Tu pourras ainsi créer une plage dynamique simplement en créant une plage nommée sur base de ton tableau. En utilisant cette technique, tu peux ajouter les données que tu veux, la liste est actualisée à l'initialisation du userform.
Il suffira alors, à l'initialisation du userform, d'actualiser la rowsource du combobox, comme illustré dans le code ci-dessous. Lors du changement de sélection sur le combobox, il faut alors renvoyer la valeur de la colonne souhaitée du combobox.
1 2 3 4 5 6 7 8 9
| Private Sub cboFirstName_Change()
With cboFirstName
labLastName.Caption = .Column(1, .ListIndex)
End With
End Sub
Private Sub UserForm_Initialize()
cboFirstName.RowSource = "=plage"
End Sub |
Cela étant, tu parles d'
étiquettes (label) et Patrick illustre cela avec des
zones de text (TextBox). A toi d'adapter mon code en fonction de ton besoin. Le principe est de déléguer au maximum le travail à Excel et de s'appuyer dessus pour du VBA. C'est pourquoi je préconise l'utilisation de la table de données liée à une plage dynamique. Cela réduit ton code au minimum vital et donc limite les risques d'erreurs.
Remarque: Sur ma version 2016, si on ne redéfinis pas le rowsource lors de l'initialisation du userform, Excel plante...
mais avec cette ligne de code en plus, ça fonctionne
Partager