XL 2013 List dynamique d'une ComboBox

SebastienBru

XLDnaute Nouveau
Bonjour à tous,

Pourriez-vous m'aider sur ce sujet qui concerne une ComboBox.
En effet, pour un certain besoin :
- J'ai utilisé un UserForm (Que j'ouvre à partir d'un bouton dans ma Feuil1) dans lequel j'ai des TextBox et une ComboBox nommée "TypeComboBox".
Or je souhaite que cette ComboBox possède comme variables l'ensemble des valeurs que j'ai dans ma feuille 2 nommée "Config" qui sont dans la colonne A, a partir de la ligne 1.

Voici le bout de code que j'ai utilisé :
Private Sub TypeComboBox_Change()

Dim i As Integer

With Worksheets("Config")
'Récupère les données de la colonne A...
For i = 1 To Range("A65536").End(xlUp).Row
TypeComboBox = Range("A" & i)
'...et filtre les doublons
If TypeComboBox.ListIndex = -1 Then TypeComboBox.AddItem Range("A" & i)
Next i
End Sub

Je reste disponible,

Merci
 

xUpsilon

XLDnaute Accro
Bonjour,

Tu as simplement oublié les .
Quand tu fais With ____, les arguments que tu entres ensuite s'attacheront à ce with uniquement si ils commencent par . , c'est à dire ici .Range("___")......

VB:
Private Sub TypeComboBox_Change()

Dim i As Integer

With Worksheets("Config")
'Récupère les données de la colonne A...
For i = 1 To .Range("A65536").End(xlUp).Row
TypeComboBox = .Range("A" & i)
'...et filtre les doublons
If TypeComboBox.ListIndex = -1 Then TypeComboBox.AddItem .Range("A" & i)
Next i
End Sub

Bonne continuation
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Sébastien, xUpsilon, bonjour le forum,

Je ne pense pas que l'emplacement pour alimenter la combobox dans l'événement Change de cette même combobox soit le plus approprié. Je mettrai plutôt ce code à l'initialisation de l'UserForm. Outre la réponse correcte d'xUpsilon, je te propose le code ci-dessous qui utilise un objet Dictionary pour la gestion des doublons, bien plus rapide...

VB:
Private Sub UserForm_Initialize()
Dim OC As Worksheet 'déclare la variable OC (Onglet Config)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set OC = Worksheets("Config") 'définit l'onglet OC
TV = OC.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avac les données en colonne 1 de TV
Next I 'prochaine ligne de la boucle
Me.TypeComboBox.List = D.keys 'alimente la combobox [TypeComboBox]avec la liste des éléments du dictionnaire D sans doublons
End Sub
 

SebastienBru

XLDnaute Nouveau
Merci pour ta réponse, en effet j'avais essayé de mettre un point à seulement un Range. Bref.

Je viens de mettre à jour et j'ai compris ce que tu me dis. Mais la liste n'apparait pas lorsque je déroule ma ComboBox.

Je vous joint le fichier, le code est dans le UserForm "AjoutLigneDepense", et dans la seule ComboBox .

Je n'ai fais que quelques heures de VBA, ne jugez pas la qualité :)


Je reste disponible !
 

Pièces jointes

  • Copie de V7 Final.xlsm
    423.9 KB · Affichages: 27

SebastienBru

XLDnaute Nouveau
AH oui, ça c'est un autre problème que je n'aborderai pas dans ce sujet.
Mon problème ici concerne le bouton en haut à gauche "Ajouter une dépense". Et dans ce UserForm, la liste déroulante n'est pas liée à la liste de variable que j'ai dans la feuille "Config".

Cordialement,
 

SebastienBru

XLDnaute Nouveau
Dernier code que j'ai fait :
Private Sub TypeComboBox_Change()
Dim i As Integer
' On fabrique la liste déroulante (->sans la valeur retirée de la colonne A)
i = 1
TypeComboBox.Clear 'On efface toute la liste
Do While Feuil2.Cells(i, 1).Value <> ""
Feuil1.TypeComboBox.AddItem Feuil2.Cells(i, 1).Value
i = i + 1
Loop
End Sub

Ces lignes de codes fonctionnent pour un ComboBox sur une feuille. Or là, le ComboBox est dans un userform. Est-ce un problème du chemin d'accès dans la ligne après le Do While ?

Merci par avance,
 

Discussions similaires

Réponses
28
Affichages
921
Réponses
5
Affichages
125

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400