Bonjour,
je suis en train de configurer un formulaire en VBA Excel pour générer un horaire de mécanos.
Tableau Excel : (voir fichier attaché SVP pour comprendre la configuration)
ressources en X
journée en Y
Paramètres :
- Nom de la ressource
- Journée
- nombre d'heure
- description du travail
J'aimerai simplifier mon code avec une boucle pour ne pas avoir à coder chaque possibilité de ressource pour chaque journée , pour chaque heures de travail (1 à 8)
Pouvez vous m'aider SVP
'CONRAD : LUNDI 7 heures
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "CONRAD" .AddItem "MATHIEU" .AddItem "MARTIN" .AddItem "MICHAEL" .AddItem "RICHARD" .AddItem "WILLIAM" .AddItem "WILLIAM" End With With ComboBox2 .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "8" End With With ComboBox3 .AddItem "Lundi" .AddItem "Mardi" .AddItem "Mercredi" .AddItem "Jeudi" .AddItem "Vendredi" .AddItem "Samedi" .AddItem "Dimanche" End With With ComboBox4 .AddItem "Client" .AddItem "Location" .AddItem "Vente" .AddItem "Service" .AddItem "Abscent" End With End Sub Sub CommandButton1_Click() 'CONRAD : LUNDI 8 heures If Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = 8 Then Range("B4:B11").UnMerge Range("B4:B11").Merge Range("B4:B11").Value = ComboBox4.Value 'Range("B4:B11").Borders.LineStyle = xlContinuous Range("C4:C11").UnMerge Range("C4:C11").Merge Range("C4:C11").Value = ComboBox2.Value 'Range("B4:B11").Borders.LineStyle = xlContinuous Range("D4:D11").UnMerge Range("D4:D11").Merge Range("D4:D11").Value = TextBox1.Value 'Range("B4:B11").Borders.LineStyle = xlContinuous 'Color codes by catégorie of activity If ComboBox4.Value = "Client" Then Range("B4:B11").Interior.Color = RGB(153, 204, 255) ElseIf ComboBox4.Value = "Location" Then Range("B4:B11").Interior.Color = RGB(255, 255, 0) ElseIf ComboBox4.Value = "Vente" Then Range("B4:B11").Interior.Color = RGB(153, 204, 0) ElseIf ComboBox4.Value = "Service" Then Range("B4:B11").Interior.Color = RGB(255, 204, 0) ElseIf ComboBox4.Value = "Abscent" Then Range("B4:B11").Interior.Color = RGB(192, 192, 192) End If
Bon désolé je me suis peut-être mal expliqué,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "7" Then Range("B4:B10").UnMerge Range("B4:B10").Merge Range("B4:B10").Value = ComboBox4.Value Range("B4:B10").Borders.LineStyle = xlContinuous Range("C4:C10").UnMerge Range("C4:C10").Merge Range("C4:C10").Value = ComboBox2.Value Range("C4:C10").Borders.LineStyle = xlContinuous Range("D4:D10").UnMerge Range("D4:D10").Merge Range("D4:D10").Value = TextBox1.Value Range("D4:D10").Borders.LineStyle = xlContinuous 'Color codes by catégorie of activity If ComboBox4.Value = "Client" Then Range("B4:B10").Interior.Color = RGB(153, 204, 255) ElseIf ComboBox4.Value = "Location" Then Range("B4:B10").Interior.Color = RGB(255, 255, 0) ElseIf ComboBox4.Value = "Vente" Then Range("B4:B10").Interior.Color = RGB(153, 204, 0) ElseIf ComboBox4.Value = "Service" Then Range("B4:B10").Interior.Color = RGB(255, 204, 0) ElseIf ComboBox4.Value = "Abscent" Then Range("B4:B10").Interior.Color = RGB(192, 192, 192) End If 'CONRAD : LUNDI 6 heures ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "6" Then Range("B4:B9").UnMerge Range("B4:B9").Merge Range("B4:B9").Value = ComboBox4.Value Range("B4:B9").Borders.LineStyle = xlContinuous Range("C4:C9").UnMerge Range("C4:C9").Merge Range("C4:C9").Value = ComboBox2.Value Range("C4:C9").Borders.LineStyle = xlContinuous Range("D4:D9").UnMerge Range("D4:D9").Merge Range("D4:D9").Value = TextBox1.Value Range("D4:D9").Borders.LineStyle = xlContinuous 'Color codes by catégorie of activity If ComboBox4.Value = "Client" Then Range("B4:B9").Interior.Color = RGB(153, 204, 255) ElseIf ComboBox4.Value = "Location" Then Range("B4:B9").Interior.Color = RGB(255, 255, 0) ElseIf ComboBox4.Value = "Vente" Then Range("B4:B9").Interior.Color = RGB(153, 204, 0) ElseIf ComboBox4.Value = "Service" Then Range("B4:B9").Interior.Color = RGB(255, 204, 0) ElseIf ComboBox4.Value = "Abscent" Then Range("B4:B9").Interior.Color = RGB(192, 192, 192) End If ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "5" Then Range("B4:B8").UnMerge Range("B4:B8").Merge Range("B4:B8").Value = ComboBox4.Value ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "4" Then Range("B4:B7").UnMerge Range("B4:B7").Merge Range("B4:B7").Value = ComboBox4.Value ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "3" Then Range("B4:B6").UnMerge Range("B4:B6").Merge Range("B4:B6").Value = ComboBox4.Value ElseIf Me.ComboBox1.Value = "CONRAD" And Me.ComboBox3.Value = "Lundi" And Me.ComboBox2.Value = "2" Then Range("B4:B5").UnMerge Range("B4:B5").Merge Range("B4:B5").Value = ComboBox4.Value End If End Sub Private Sub CommandButton2_Click() Unload Me End Sub
Mais bon tu peux voir mon code en pièce jointe, sinon ma problématique est que pour chaque ressources (mécanos) que je possède et pour chaque journée de la semaine, il faudrait que je copie le code actuel et que je modifie mes coordonnées de Range définis dans mon code, Ce que je trouve un peu nul, car je suis persuadé qu'il y a une forme de boucle que je pourrai faire pour couvrir le tout.
Car le principe est simple , je sélectionne le mécano, ensuite la journée, ensuite le nombre d'heures à bosser, la catégorie et le détail du travail.
Par la suite je viens fusionner et colorier le nombre de cellule en fonction du nombre d'heures (chaque cellule vaut une heure dans tableau) et je viens finalement transposer l'information de la catégorie et du détail du travail.
J'espère que c'est plus clair.
Merci d'avance les amis
Partager