Code vba à simplifier

JLF47

XLDnaute Nouveau
Salut à tous,
Je débute et je bute sur un problème de code vba.
Je dois utiliser la même liste pour plusieurs combobox dans un seul userform.
Le code que j'utilise fonctionne, mais est-il possible de le rendre plus simple.


Private Sub UserForm_Initialize()

With ComboBox_Atelier_1

.AddItem "Non défini"
.AddItem "10-Conserverie"
.AddItem "12-Etiquetage"
.AddItem "14-Préparation Commandes"
.AddItem "16-Formes Souples"
.AddItem "70-Produits Japonnais"
.AddItem "75-Sel"
.AddItem "95-Non Affectable (NF)"

End With

With ComboBox_Atelier_2

.AddItem "Non défini"
.AddItem "10-Conserverie"
.AddItem "12-Etiquetage"
.AddItem "14-Préparation Commandes"
.AddItem "16-Formes Souples"
.AddItem "70-Produits Japonnais"
.AddItem "75-Sel"
.AddItem "95-Non Affectable (NF)"

End With

End Sub

Toute aide me sera bien utile.
Merci à tous.
 

cbea

XLDnaute Impliqué
Re : Code vba à simplifier

Bonsoir JFL47,

Je te propose le code ci-dessous :

Code:
Private Sub UserForm_Initialize()
    Call ChargeCombo(ComboBox_Atelier_1)
    Call ChargeCombo(ComboBox_Atelier_2)
End Sub

Private Sub ChargeCombo(combo As Object)
    With combo
        .AddItem "Non défini"
        .AddItem "10-Conserverie"
        .AddItem "12-Etiquetage"
        .AddItem "14-Préparation Commandes"
        .AddItem "16-Formes Souples"
        .AddItem "70-Produits Japonnais"
        .AddItem "75-Sel"
        .AddItem "95-Non Affectable (NF)"
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Code vba à simplifier

Bonsoir


Tu peux essayer cela

(le code ci-dessous fonctionne si les combobox gardent leur nom ComboBox1 et ComboBox2)

Code:
Private Sub UserForm_Initialize()
Remplir_Combo(1)
Remplir_Combo(2)
End Sub
Code:
Sub Remplir_Combo(X As String)
tablo = Array("Non défini", "10-Conserverie", _
"12-Etiquetage", "14-Préparation Commandes", _
"16-Formes Souples", "70-Produits Japonnais", "75-Sel", "95-Non Affectable (NF)")
With Me.Controls("ComboBox" & X)
For i = LBound(tablo) To UBound(tablo)
.AddItem tablo(i)
Next
End With
End Sub
edition 1: bonsoir cbea dont je salue la simplicité du code ;)

edition 2 : bonsoir bhbh


JLF47: une variante pour
Code:
Private Sub UserForm_Initialize()
For i = 1 To 2
Remplir_Combo (i)
Next
End Sub
edition 3: comme tu dis débuter , je te conseille (si je peux me permettre) d'utiliser la syntaxe
(par degré de compléxité)

1) celle de cbea
2) celle de bhbh

et enfin ma proposition qui est la moins intuitive des trois propositions.
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Code vba à simplifier

Bonsoir,
bonsoir staple, cbea

et une troisième variante :

Code:
For Each cbb In Me.Controls
    If cbb.Name Like "Combo*" Then
        With cbb
            .AddItem "Non défini"
            .AddItem "10-Conserverie"
            .AddItem "12-Etiquetage"
            .AddItem "14-Préparation Commandes"
            .AddItem "16-Formes Souples"
            .AddItem "70-Produits Japonnais"
            .AddItem "75-Sel"
            .AddItem "95-Non Affectable (NF)"
        End With
    End If
Next cbb

si tous tes combobox sont à initialiser ainsi, autrement, il faudra jouer plus fin....
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
343
Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 502
Messages
2 089 024
Membres
104 007
dernier inscrit
Monvieux