Bonjour a vous,
JE sollicite votre aide concernant un code que j'utilise depuis quelques temps. Ce code est une version du fameux Trim, mais qui enlève également certains caractère spéciaux.
Je voudrais utilisé la fonction CleanTrim ou quelquechose qui fait la même chose, pour un ensemble de cellule d'un de mes documents de travail afin d'éviter d'avoir des espace et retour de chariot (alt+enter) apres certains donnés qui me cause problème lors de l'intégration du fichier dans une base donnée. Le CleanTrim est pours la seconde ligne de la colonne no_format_travail (qui est présentement L), f_travail (qui est présentement la colonne N), c_travail (qui est présentement la colonne O), g_travail (qui est présentement la colonne P) et sg_travail (qui est présentement la colonne Q) jusqu'à la dernière utilisé de chacune des colonnes.
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 Function CleanTrim(ByVal S As String, Optional ConvertNonBreakingSpace As Boolean = True) As String Dim x As Long, CodesToClean As Variant CodesToClean = Array(0, 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, 127, 129, 141, 143, 144, 157) If ConvertNonBreakingSpace Then S = Replace(S, Chr(160), " ") For x = LBound(CodesToClean) To UBound(CodesToClean) If InStr(S, Chr(CodesToClean(x))) Then S = Replace(S, Chr(CodesToClean(x)), "") Next CleanTrim = WorksheetFunction.Trim(S) End Function
SI j'utilise CleanTrim dans une boucle, je n'ai pas de problème, je n'ai pas de message d'erreur.
Si j'utilise CleanTrim dans un array ou Seulement dans un code qu'un range est égale au range affecté de CleanTrim j'arrive avec un message d'erreur. Donc je voudrais éviter de faire une boucle afin d eviter de ralentir le code..
Voici mon code de depart
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240 Sub copiedansproduit_item_creation() Dim x As Integer Dim cell As Variant Dim LettreVoulue As String LettreVoulue = TrouveLettreColonne([prov_long_travail]) Application.ScreenUpdating = False 'ici serais l'emplacement du Cleantrim 'enlever les lignes de produit_item si jamais on refais la macro Worksheets("produits_items").Range("a2:BZ" & LastLignUsedInSheet("produits_items") + 1).Delete Sheets("Travail").Select For Each cell In Worksheets("Travail").Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInColumn(LettreVoulue)) x = x + 1 If IsEmpty(Cells(x + 1, [no_item_travail].Column).value) Then ' Si la couleur n'est pas un numéro ou le format n'est lui non plus un numéro ou ' si la provinciale courte est vide ou est égale a "???" ou le GAC ayant description régionale est vide ou est égale a "???" ' ou la provinciale longue est supérieur a 200 caractères ou la provinciale courte est supérieur a 100 caractères ' ou la famille classe groupe sous-groupe n'existe pas ou si le GAC ayant description régionale est ano ou gaceq ou sigma ou ??? et que la ' description régionale longue est supérieur de 200 et la courte supérieur a 100 et que le GAC ayant description courte est différent des choix ' possibles on indique un erreur et on quitte la sub If IsNumeric(Cells(x + 1, [no_couleur_travail].Column)) = False _ Or IsNumeric(Cells(x + 1, [no_format_travail].Column)) = False _ Or IsEmpty(Cells(x + 1, [no_format_travail].Column)) _ Or IsEmpty(Cells(x + 1, [prov_court_travail].Column)) _ Or Cells(x + 1, [prov_court_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [gac_travail].Column)) _ Or Cells(x + 1, [gac_travail].Column) = "???" _ Or Len(Cells(x + 1, [prov_long_travail].Column)) > 200 _ Or Len(Cells(x + 1, [prov_court_travail].Column)) > 100 _ Or Cells(x + 1, [fcgs_travail].Column) = "non" _ Or ((Cells(x + 1, [gac_travail].Column) = "SIGMA" Or Cells(x + 1, [gac_travail].Column) = "sigma" _ Or Cells(x + 1, [gac_travail].Column) = "gaceq" Or Cells(x + 1, [gac_travail].Column) = "GACEQ" _ Or Cells(x + 1, [gac_travail].Column) = "ano" Or Cells(x + 1, [gac_travail].Column) = "ANO") _ And (Cells(x + 1, [reg_long_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [reg_long_travail].Column)) _ Or Len(Cells(x + 1, [reg_long_travail].Column)) > 200 _ Or Cells(x + 1, [reg_court_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [reg_court_travail].Column)) Or Len(Cells(x + 1, [reg_court_travail].Column)) > 100)) _ Or (Cells(x + 1, [gac_travail].Column) <> "gaceq" And Cells(x + 1, [gac_travail].Column) <> "GACEQ" _ And Cells(x + 1, [gac_travail].Column) <> "sigma" And Cells(x + 1, [gac_travail].Column) <> "SIGMA" _ And Cells(x + 1, [gac_travail].Column) <> "tous" And Cells(x + 1, [gac_travail].Column) <> "TOUS" _ And Cells(x + 1, [gac_travail].Column) <> "ANO" And Cells(x + 1, [gac_travail].Column) <> "ano" _ And Cells(x + 1, [gac_travail].Column) <> "aucun" And Cells(x + 1, [gac_travail].Column) <> "AUCUN") Then MsgBox "N'a pu transféré dans l'onglet produit_item, utiliser le bouton validation a fin de trouver les erreurs !!!", vbCritical Exit Sub Else If IsEmpty(Cells(x + 1, [no_item_travail].Column).value) Then 'copie description provinciale longue Sheets("produits_items").Cells(x + 1, [desc_prov_pi].Column) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'copie description provinciale courte Sheets("produits_items").Cells(x + 1, [desc_prov_court_pi].Column) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) 'mettre vrai dans index des taxes Union(Sheets("produits_items").Cells(x + 1, [ind_tx_prov_pi].Column), _ Sheets("produits_items").Cells(x + 1, [ind_taxe_fed_pi].Column)) = "TRUE" 'mettre P dans code_portee_produit et dans code_portee_item Union(Sheets("produits_items").Cells(x + 1, [code_portee_produit_pi].Column), _ Sheets("produits_items").Cells(x + 1, [code_portee_item_pi].Column)) = "P" 'copie de la famille Sheets("produits_items").Cells(x + 1, [no_famille_pi].Column) = Sheets("Travail").Cells(x + 1, [f_travail].Column) 'copie de la classe Sheets("produits_items").Cells(x + 1, [no_classe_pi].Column) = Sheets("Travail").Cells(x + 1, [c_travail].Column) 'copie du groupe Sheets("produits_items").Cells(x + 1, [no_groupe_pi].Column) = Sheets("Travail").Cells(x + 1, [g_travail].Column) 'copie du sous-groupe Sheets("produits_items").Cells(x + 1, [no_ss_groupe_pi].Column) = Sheets("Travail").Cells(x + 1, [sg_travail].Column) 'copie du format Sheets("produits_items").Cells(x + 1, [no_format_pi].Column) = CleanTrim(Sheets("Travail").Cells(x + 1, [no_format_travail].Column)) 'ce cleantrim sera a enlever apres que le menage initiale fonctionne 'copie de la couleur s'il y a lieu If Not IsEmpty(Sheets("Travail").Cells(x + 1, [no_couleur_travail].Column).value) Then _ Sheets("produits_items").Cells(x + 1, [no_couleur_pi].Column) = Sheets("Travail").Cells(x + 1, [no_couleur_travail].Column) 'copie de la regionale longue et courte dépendamment de la colonne GAC ayant description régionnale Sheets("Travail").Select If Cells(x + 1, [gac_travail].Column).value = "GACEQ" Or Cells(x + 1, [gac_travail].Column).value = "gaceq" Then 'Si GACEQ copie régionale longue dans desc_reg_gaceq Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si GACEQ copie régionale courte dans desc_reg_court_gaceq Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si GACEQ copie provinciale longue dans desc_reg_gacouest et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si GACEQ copie provinciale courte dans desc_reg_court_gacouest et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "ANO" Or Cells(x + 1, [gac_travail].Column).value = "ano" Then 'Si ANO copie régionale longue dans desc_reg_gacouest Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si ANO copie régionale courte dans desc_reg_court_gacouest Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si ANO copie provinciale longue dans desc_reg_gaceq et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si ANO copie provinciale courte dans desc_reg_court_gaceq et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "SIGMA" Or Cells(x + 1, [gac_travail].Column).value = "sigma" Then 'Si SIGMA copie régionale longue dans desc_reg_sigmasante Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si SIGMA copie régionale courte dans desc_reg_court_sigmasante Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si SIGMA copie provinciale longue dans desc_reg_gaceq et desc_reg_gacouest Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si SIGMA copie provinciale courte dans desc_reg_court_gaceq et desc_reg_court_gacouest Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "AUCUN" Or Cells(x + 1, [gac_travail].Column).value = "aucun" Then 'Si "aucun" copie provinciale longue dans desc_reg_gaceq, desc_reg_gacouest et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si "aucun" copie provinciale courte dans desc_reg_court_gaceq, desc_reg_court_gacouest et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "TOUS" Or Cells(x + 1, [gac_travail].Column).value = "tous" Then 'Si TOUS copie régionale longue dans desc_reg_gacouest_pi, desc_reg_gaceq_pi, desc_reg_sigmasante_pi Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si TOUS copie régionale courte dans desc_reg_court_gaceq_pi,desc_reg_court_gacouest_pi,desc_reg_court_sigmasante_pi Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) End If 'Si la famille copier est 80 mettre S sinon P dans code_type_produit Sheets("produits_items").Cells(x + 1, [code_type_produit_pi].Column).value = _ IIf(Sheets("produits_items").Cells(x + 1, [no_famille_pi].Column).value = 80, "S", "P") End If End If End If Next cell 'enlever les lignes vides de la feuille produits_items Sheets("produits_items").Select Range("A2").EntireRow.Insert Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'sauvegarder le document ActiveWorkbook.Save End Sub
Voici également mon test avec le array (avec erreur)
Je joins également une version de mon fichier de travail sans macro
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271 Sub copiedansproduit_item_creationTEST() Dim x As Integer Dim cell As Variant Dim LettreVoulue As String Dim LettreFormat As String Dim LettreFamille As String Dim LettreClasse As String Dim LettreGroupe As String Dim LettreSousGroupe As String Dim tout_Format As Range Dim tout_Famille As Range Dim tout_Classe As Range Dim tout_Groupe As Range Dim tout_SousGroupe As Range Dim ACorriger As Variant Dim element As Variant LettreVoulue = TrouveLettreColonne([prov_long_travail]) LettreFormat = TrouveLettreColonne([no_format_travail]) LettreFamille = TrouveLettreColonne([f_travail]) LettreClasse = TrouveLettreColonne([c_travail]) LettreGroupe = TrouveLettreColonne([g_travail]) LettreSousGroupe = TrouveLettreColonne([sg_travail]) Set tout_Format = Worksheets("Travail").Range(LettreFormat & 2, LettreFormat & LastLignUsedInColumn(LettreFormat)) Set tout_Famille = Worksheets("Travail").Range(LettreFamille & 2, LettreFamille & LastLignUsedInColumn(LettreFamille)) Set tout_Classe = Worksheets("Travail").Range(LettreClasse & 2, LettreClasse & LastLignUsedInColumn(LettreClasse)) Set tout_Groupe = Worksheets("Travail").Range(LettreGroupe & 2, LettreGroupe & LastLignUsedInColumn(LettreGroupe)) Set tout_SousGroupe = Worksheets("Travail").Range(LettreSousGroupe & 2, LettreSousGroupe & LastLignUsedInColumn(LettreSousGroupe)) ACorriger = Array(tout_Format, tout_Famille, tout_Classe, tout_Groupe, tout_SousGroupe) Application.ScreenUpdating = False 'nettoyer les lignes critiques afin d'enlever les caractères spéciaux For Each element In tout_Format element.value = CleanTrim(element.value) Next element 'enlever les lignes de produit_item si jamais on refais la macro Worksheets("produits_items").Range("a2:BZ" & LastLignUsedInSheet("produits_items") + 1).Delete Sheets("Travail").Select For Each cell In Worksheets("Travail").Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInColumn(LettreVoulue)) x = x + 1 If IsEmpty(Cells(x + 1, [no_item_travail].Column).value) Then ' Si la couleur n'est pas un numéro ou le format n'est lui non plus un numéro ou ' si la provinciale courte est vide ou est égale a "???" ou le GAC ayant description régionale est vide ou est égale a "???" ' ou la provinciale longue est supérieur a 200 caractères ou la provinciale courte est supérieur a 100 caractères ' ou la famille classe groupe sous-groupe n'existe pas ou si le GAC ayant description régionale est ano ou gaceq ou sigma ou ??? et que la ' description régionale longue est supérieur de 200 et la courte supérieur a 100 et que le GAC ayant description courte est différent des choix ' possibles on indique un erreur et on quitte la sub If IsNumeric(Cells(x + 1, [no_couleur_travail].Column)) = False _ Or IsNumeric(Cells(x + 1, [no_format_travail].Column)) = False _ Or IsEmpty(Cells(x + 1, [no_format_travail].Column)) _ Or IsEmpty(Cells(x + 1, [prov_court_travail].Column)) _ Or Cells(x + 1, [prov_court_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [gac_travail].Column)) _ Or Cells(x + 1, [gac_travail].Column) = "???" _ Or Len(Cells(x + 1, [prov_long_travail].Column)) > 200 _ Or Len(Cells(x + 1, [prov_court_travail].Column)) > 100 _ Or Cells(x + 1, [fcgs_travail].Column) = "non" _ Or ((Cells(x + 1, [gac_travail].Column) = "SIGMA" Or Cells(x + 1, [gac_travail].Column) = "sigma" _ Or Cells(x + 1, [gac_travail].Column) = "gaceq" Or Cells(x + 1, [gac_travail].Column) = "GACEQ" _ Or Cells(x + 1, [gac_travail].Column) = "ano" Or Cells(x + 1, [gac_travail].Column) = "ANO") _ And (Cells(x + 1, [reg_long_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [reg_long_travail].Column)) _ Or Len(Cells(x + 1, [reg_long_travail].Column)) > 200 _ Or Cells(x + 1, [reg_court_travail].Column) = "???" _ Or IsEmpty(Cells(x + 1, [reg_court_travail].Column)) Or Len(Cells(x + 1, [reg_court_travail].Column)) > 100)) _ Or (Cells(x + 1, [gac_travail].Column) <> "gaceq" And Cells(x + 1, [gac_travail].Column) <> "GACEQ" _ And Cells(x + 1, [gac_travail].Column) <> "sigma" And Cells(x + 1, [gac_travail].Column) <> "SIGMA" _ And Cells(x + 1, [gac_travail].Column) <> "tous" And Cells(x + 1, [gac_travail].Column) <> "TOUS" _ And Cells(x + 1, [gac_travail].Column) <> "ANO" And Cells(x + 1, [gac_travail].Column) <> "ano" _ And Cells(x + 1, [gac_travail].Column) <> "aucun" And Cells(x + 1, [gac_travail].Column) <> "AUCUN") Then MsgBox "N'a pu transféré dans l'onglet produit_item, utiliser le bouton validation a fin de trouver les erreurs !!!", vbCritical Exit Sub Else If IsEmpty(Cells(x + 1, [no_item_travail].Column).value) Then 'copie description provinciale longue Sheets("produits_items").Cells(x + 1, [desc_prov_pi].Column) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'copie description provinciale courte Sheets("produits_items").Cells(x + 1, [desc_prov_court_pi].Column) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) 'mettre vrai dans index des taxes Union(Sheets("produits_items").Cells(x + 1, [ind_tx_prov_pi].Column), _ Sheets("produits_items").Cells(x + 1, [ind_taxe_fed_pi].Column)) = "TRUE" 'mettre P dans code_portee_produit et dans code_portee_item Union(Sheets("produits_items").Cells(x + 1, [code_portee_produit_pi].Column), _ Sheets("produits_items").Cells(x + 1, [code_portee_item_pi].Column)) = "P" 'copie de la famille Sheets("produits_items").Cells(x + 1, [no_famille_pi].Column) = Sheets("Travail").Cells(x + 1, [f_travail].Column) 'copie de la classe Sheets("produits_items").Cells(x + 1, [no_classe_pi].Column) = Sheets("Travail").Cells(x + 1, [c_travail].Column) 'copie du groupe Sheets("produits_items").Cells(x + 1, [no_groupe_pi].Column) = Sheets("Travail").Cells(x + 1, [g_travail].Column) 'copie du sous-groupe Sheets("produits_items").Cells(x + 1, [no_ss_groupe_pi].Column) = Sheets("Travail").Cells(x + 1, [sg_travail].Column) 'copie du format Sheets("produits_items").Cells(x + 1, [no_format_pi].Column) = Sheets("Travail").Cells(x + 1, [no_format_travail].Column) 'copie de la couleur s'il y a lieu If Not IsEmpty(Sheets("Travail").Cells(x + 1, [no_couleur_travail].Column).value) Then _ Sheets("produits_items").Cells(x + 1, [no_couleur_pi].Column) = Sheets("Travail").Cells(x + 1, [no_couleur_travail].Column) 'copie de la regionale longue et courte dépendamment de la colonne GAC ayant description régionnale Sheets("Travail").Select If Cells(x + 1, [gac_travail].Column).value = "GACEQ" Or Cells(x + 1, [gac_travail].Column).value = "gaceq" Then 'Si GACEQ copie régionale longue dans desc_reg_gaceq Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si GACEQ copie régionale courte dans desc_reg_court_gaceq Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si GACEQ copie provinciale longue dans desc_reg_gacouest et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si GACEQ copie provinciale courte dans desc_reg_court_gacouest et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "ANO" Or Cells(x + 1, [gac_travail].Column).value = "ano" Then 'Si ANO copie régionale longue dans desc_reg_gacouest Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si ANO copie régionale courte dans desc_reg_court_gacouest Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si ANO copie provinciale longue dans desc_reg_gaceq et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si ANO copie provinciale courte dans desc_reg_court_gaceq et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "SIGMA" Or Cells(x + 1, [gac_travail].Column).value = "sigma" Then 'Si SIGMA copie régionale longue dans desc_reg_sigmasante Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si SIGMA copie régionale courte dans desc_reg_court_sigmasante Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) 'Si SIGMA copie provinciale longue dans desc_reg_gaceq et desc_reg_gacouest Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si SIGMA copie provinciale courte dans desc_reg_court_gaceq et desc_reg_court_gacouest Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "AUCUN" Or Cells(x + 1, [gac_travail].Column).value = "aucun" Then 'Si "aucun" copie provinciale longue dans desc_reg_gaceq, desc_reg_gacouest et desc_reg_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_long_travail].Column) 'Si "aucun" copie provinciale courte dans desc_reg_court_gaceq, desc_reg_court_gacouest et desc_reg_court_sigmasante Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [prov_court_travail].Column) ElseIf Cells(x + 1, [gac_travail].Column).value = "TOUS" Or Cells(x + 1, [gac_travail].Column).value = "tous" Then 'Si TOUS copie régionale longue dans desc_reg_gacouest_pi, desc_reg_gaceq_pi, desc_reg_sigmasante_pi Union(Sheets("produits_items").Cells(x + 1, [desc_reg_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [reg_long_travail].Column) 'Si TOUS copie régionale courte dans desc_reg_court_gaceq_pi,desc_reg_court_gacouest_pi,desc_reg_court_sigmasante_pi Union(Sheets("produits_items").Cells(x + 1, [desc_reg_court_gacouest_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_gaceq_pi].Column), _ Sheets("produits_items").Cells(x + 1, [desc_reg_court_sigmasante_pi].Column)) = Sheets("Travail").Cells(x + 1, [reg_court_travail].Column) End If 'Si la famille copier est 80 mettre S sinon P dans code_type_produit Sheets("produits_items").Cells(x + 1, [code_type_produit_pi].Column).value = _ IIf(Sheets("produits_items").Cells(x + 1, [no_famille_pi].Column).value = 80, "S", "P") End If End If End If Next cell 'enlever les lignes vides de la feuille produits_items Sheets("produits_items").Select Range("A2").EntireRow.Insert Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'sauvegarder le document ActiveWorkbook.Save End Sub
un gros merci !!!!
Partager