Code vba à simplifier

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

J

JLF47

Guest
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.
 
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
 
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:
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....
 
- 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 Code VBA
Réponses
2
Affichages
570
L
Réponses
4
Affichages
776
Lindsay_RBD
L
D
Réponses
4
Affichages
1 K
S
Réponses
11
Affichages
1 K
sgangbadjo
S
S
Réponses
13
Affichages
2 K
Stedemart
S
Réponses
1
Affichages
1 K
N
Réponses
5
Affichages
3 K
Nicocotte125
N
B
Réponses
2
Affichages
2 K
bastienb
B
H
Réponses
4
Affichages
2 K
Hauliege
H
D
Réponses
1
Affichages
979
Dudesson
D
H
  • Question Question
2
Réponses
17
Affichages
2 K
M
  • Question Question
Réponses
0
Affichages
1 K
Mirguy23
M
S
Réponses
1
Affichages
1 K
SCorbeil
S
Retour