Microsoft 365 Combobox

Regueiro

XLDnaute Impliqué
Bonsoir le Forum
J'aimerais alimenter me.combobox.2 avec

Les données ci-dessous :​
Ce que je veux dans le combobox.2​
HFSHS 40 / 2.6
HFSHS 40 / 3.2
HFSHS 40 / 4
HFSHS 40 / 5
HFSHS 50 / 2.6
HFSHS 50 / 3.2
HFSHS 50 / 4
HFSHS 50 / 5
HFSHS 50 / 6.3
HFSHS 60 / 2.
HFSHS 40
HFSHS 50
HFSHS 60








Private Sub ComboBox1_click()
TAB1 = [TAB_HFSHS].Value
Set d = CreateObject("Scripting.Dictionary")
Select Case Me.ComboBox1
Case "Finis à Chaud - EN 10 210-2"
For Each c In TAB1
temp = ""
temp = Left(c, InStrRev(c, "/") - 1)
'MsgBox temp 'OK mais pas dans le Combobox.2

If UCase(c) Like temp Then d(c.Value) = ""

Next c
temp = d.keys
Me.ComboBox2.List = temp

'Me.ComboBox2.RowSource = "TAB_HFSHS"
'Me.ComboBox2.List = TAB1 'OK


Case "Finis à Froid - EN 10 219-2"
Me.ComboBox2.RowSource = "TAB_CFSHS"
End Select
End Sub

Merci pour votre Aide
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

VB:
  Dim i As Long
    Dim dic As Object
    Dim tb() As Variant

    Set dic = CreateObject("scripting.dictionary")
    tb = Feuil1.Range("A1:A10").Value ' Modifier la source
    For i = 1 To UBound(tb)
        dic(Split(tb(i, 1), " /")(0)) =""
    Next i
    tb = dic.keys
    If dic.Count > 1 Then
        Me.ComboBox2.List = tb
    ElseIf dic.Count = 1 Then
        Me.ComboBox2.AddItem tb(0)
    End If

bonne journée
 

Regueiro

XLDnaute Impliqué
Bonjour Le Forum, Roblochon
Merci pour votre code, je l'ai intégré dans mon fichier.

Le combobox est alimenté avec toutes les données et avec le /.
Par contre avec mon temp cela marche
temp = Left(c, InStrRev(c, "/") - 1)
mais je n'arrive pas à l'intégrer
Merci de votre Aide
 

Regueiro

XLDnaute Impliqué
Merci pour votre Aide
Voilà avec le bon Code en rouge
Private Sub ComboBox1_click()
Dim i As Long
Dim dic As Object
Dim tb() As Variant
Set dic = CreateObject("scripting.dictionary")

Select Case Me.ComboBox1
Case "Finis à Chaud - EN 10 210-2"
tb = [TAB_HFSHS].Value
For i = 1 To UBound(tb)
'dic(Split(tb(i, 1), "/ ")(0)) = ""
dic(VBA.Left(tb(i, 1), InStrRev(tb(i, 1), "/") - 1)) = ""
Next i
tb = dic.keys
If dic.Count > 1 Then
Me.ComboBox2.List = tb
ElseIf dic.Count = 1 Then
 

job75

XLDnaute Barbatruc
Bonsoir Regueiro, Roblochon,

Il n'y a pas besoin de tester si dic.Count = 1, ceci fonctionne dans tous les cas :
VB:
Dim dic As Object, tb, i&
Set dic = CreateObject("scripting.dictionary")
tb = Feuil1.Range("A1:A10") 'Modifier la source
For i = 1 To UBound(tb)
    dic(Split(tb(i, 1), " /")(0)) = ""
Next i
ComboBox2.List = dic.keys
En effet dic.keys est toujours un Array.

A+
 

Statistiques des forums

Discussions
314 450
Messages
2 109 721
Membres
110 551
dernier inscrit
Khyolyanna