userform plusieurs combobox: simplifier code

max.lander

XLDnaute Occasionnel
Bonjour à tous,

Je m'en remets une nouvelle fois à vous pour simplifier un projet.

En effet, j'utilise un userform contenant 7 combobox, un pour chaque jour de la semaine.
Pour chaque journée, j'ai deux plages horaires (Matin + APM).


En fonction du combobox, je souhaite pouvoir activer ou désactiver les zone horaires.

Si Matin on bloque et grise l'après-midi ainsi de suite.


J'ai créer un bout de code pour la journée 1, le code fonctionne bien mais je trouve très lourd de répéter 7 fois la même chose, la question est simple peut-on simplifier ?

De plus le code est très long pour une opération au final très simple :(

Vous trouverez en PJ un fichier exemple.


Merci par avance



VB:
Sub CBox_Journée1()

Selection = Planner.Controls("ComboBox_Journée1").Value


Select Case Selection

Case Is = "Journée"

For i = 1 To 4
Planner.Controls("TextBox_H" & i).Enabled = True
Planner.Controls("TextBox_H" & i).BackColor = &H80000005
Planner.Controls("TextBox_H" & i).Value = ""
Next


Case Is = "Repos"

For i = 1 To 4
Planner.Controls("TextBox_H" & i).Enabled = False
Planner.Controls("TextBox_H" & i).BackColor = &H80000011
Planner.Controls("TextBox_H" & i).Value = ""

Next

Case Is = "RTT"

For i = 1 To 4
Planner.Controls("TextBox_H" & i).Enabled = False
Planner.Controls("TextBox_H" & i).BackColor = &H80000011
Planner.Controls("TextBox_H" & i).Value = ""

Next



Case Is = "Soirée"

For i = 1 To 2
Planner.Controls("TextBox_H" & i).Enabled = False
Planner.Controls("TextBox_H" & i).BackColor = &H80000011
Planner.Controls("TextBox_H" & i).Value = ""

Next


For i = 3 To 4

Planner.Controls("TextBox_H" & i).Enabled = True
Planner.Controls("TextBox_H" & i).BackColor = &H80000005

Next


Case Is = "Après-Midi"

For i = 1 To 2
Planner.Controls("TextBox_H" & i).Enabled = False
Planner.Controls("TextBox_H" & i).BackColor = &H80000011
Planner.Controls("TextBox_H" & i).Value = ""

Next


For i = 3 To 4

Planner.Controls("TextBox_H" & i).Enabled = True
Planner.Controls("TextBox_H" & i).BackColor = &H80000005

Next

Case Is = "Matin"

For i = 1 To 2

Planner.Controls("TextBox_H" & i).Enabled = True
Planner.Controls("TextBox_H" & i).BackColor = &H80000005

Next


For i = 3 To 4

Planner.Controls("TextBox_H" & i).Enabled = False
Planner.Controls("TextBox_H" & i).BackColor = &H80000011
Planner.Controls("TextBox_H" & i).Value = ""

Next




End Select




End Sub
 

Pièces jointes

  • USF XLD.xlsm
    139.1 KB · Affichages: 52

jecherche

XLDnaute Occasionnel
Bonjour,

J'ai déplacé le code dans le Userform, c'est beaucoup plus facile pour moi que de gérer tout cela via un module.
J'ai changé "Sélection" car, il y avait malencontreusement écriture dans la cellule sélectionnée de la feuille en cours.
À tester si ça te convient...


Jecherche
 

Pièces jointes

  • Max_Lander__Copie de USF XLD2.xlsm
    134.7 KB · Affichages: 55
Dernière édition:

Discussions similaires

Réponses
4
Affichages
197
Réponses
2
Affichages
207

Statistiques des forums

Discussions
312 115
Messages
2 085 435
Membres
102 889
dernier inscrit
monsef JABBOUR