Comment faire une boucle dans une userform
Fermé
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
-
Modifié le 3 déc. 2017 à 19:36
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 3 déc. 2017 à 23:44
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 3 déc. 2017 à 23:44
A voir également:
- Comment faire une boucle dans une userform
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Pc s'allume et s'éteint en boucle - Forum Matériel informatique
- Boucle cmd - Forum Programmation
- Sortir d'une boucle for vba ✓ - Forum Excel
- Freebox redémarre en boucle ✓ - Forum Freebox
1 réponse
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
3 déc. 2017 à 19:56
3 déc. 2017 à 19:56
Bonsoir,
faire une boucle n'est pas la solution pour ne pas répéter un code comme le tien.
Il faut mettre le code dans une sub ou une fonction qui prend en paramètre les combos.
Cette fonction tu l'appelles de chaque évènement Change avec les paramètres adéquats.
Private Sub CbbxLigneBudg1_Change()
GestionCombo CbbxLigneBudg1, CbbxSsLigneBudg1
End Sub
Private Sub CbbxLigneBudg2_Change()
GestionCombo CbbxLigneBudg2.Value, CbbxSsLigneBudg2
End Sub
Par contre tu peux alléger ta cascade de If en utilisant un Select Case.
faire une boucle n'est pas la solution pour ne pas répéter un code comme le tien.
Il faut mettre le code dans une sub ou une fonction qui prend en paramètre les combos.
Cette fonction tu l'appelles de chaque évènement Change avec les paramètres adéquats.
Sub GestionCombo(Source as ComboBox, Cible as ComboBox
If Source.Value <> "" Then
Cible.Enabled = True
Else
Cible.Enabled = False
End If
If Source.Value = "Ass. Plongeur" Then
Cible.RowSource = "LstAssPlongeur"
ElseIf Source.Value = "Vètement" Then
Cible.RowSource = "LstVetement"
ElseIf Source.Value = "Reglt Plongées" Then
Cible.RowSource = "LstregltPlongée"
ElseIf Source.Value = "Boissons" Then
Cible.RowSource = "LstBoisson"
ElseIf Source.Value = "Licence" Then
Cible.RowSource = "LstLicence1"
ElseIf Source.Value = "Sorties Voyages" Then
Cible.RowSource = "LstSorties"
ElseIf Source.Value = "Formation" Then
Cible.RowSource = "LstFormation"
ElseIf Source.Value = "Fonc. Admin" Then
Cible.RowSource = "LstFoncadmin"
ElseIf Source.Value = "Manifestation" Then
Cible.RowSource = "LstManif"
ElseIf Source.Value = "Fonc. Activité" Then
Cible.RowSource = "LstFoncAct"
ElseIf Source.Value = "Charges" Then
Cible.RowSource = "LstCharge"
ElseIf Source.Value = "Subvention Cotisation" Then
Cible.RowSource = "LstSubvCotis"
End If
End Sub
Private Sub CbbxLigneBudg1_Change()
GestionCombo CbbxLigneBudg1, CbbxSsLigneBudg1
End Sub
Private Sub CbbxLigneBudg2_Change()
GestionCombo CbbxLigneBudg2.Value, CbbxSsLigneBudg2
End Sub
Par contre tu peux alléger ta cascade de If en utilisant un Select Case.
3 déc. 2017 à 21:20
Du coup je suis qd même obligé d'enchainer les 15 "private sub" ?
J'ai vu des chose sur le select case
je vais fouiner un peux pour voir comment cela fonctionne
encore merci
3 déc. 2017 à 21:41
Select Case Source.Value Case Is = "Ass. Plongeur" Cible.RowSource = "LstAssPlongeur" Case Is = "Vètement" Cible.RowSource = "LstVetement" Case Is = "Reglt Plongées" Cible.RowSource = "LstregltPlongée" Case Is = "Boissons" Cible.RowSource = "LstBoisson" Case Is = "Licence" Cible.RowSource = "LstLicence1" Case Is = "Sorties Voyages" Cible.RowSource = "LstSorties" Case Is = "Formation" Cible.RowSource = "LstFormation" Case Is = "Fonc. Admin" Cible.RowSource = "LstFoncadmin" Case Is = "Manifestation" Cible.RowSource = "LstManif" Case Is = "Fonc. Activité" Cible.RowSource = "LstFoncAct" Case Is = "Charges" Cible.RowSource = "LstCharge" Case Is = "Subvention Cotisation" Cible.RowSource = "LstSubvCotis" End Selectun peu plus simple mais toujours autant de ligne
3 déc. 2017 à 22:05
Tu fais une boucle For, pour tester les sources, quand tu trouves la bonnes, tu appliques le RowSource du même index.
VBA, c'est loin pour moi, je ne suis pas capable de te faire un exemple de tête (contrairement à tout à l'heure) et je n'ai pas de PC sous la main.
Modifié le 3 déc. 2017 à 22:31
Moi c'est ma première sur VBA ! et je m'étais juré de jamais y mettre les mains lol
Pour le reste y a-t-il moyen de faire une boucle pour éviter de faire les 15 commandes de private sub?
3 déc. 2017 à 23:44
Tu peux t'inspirer de cet exemple :
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-C