Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 00h17   #1
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Par défaut Lenteur de mon code !

Bonsoir,

Je reviens vous voir car suite à l'écriture de mes différentes fonctions j'ai une exécution plus que très lente du coup je gagne et lisibilité et maintenabilité mais en performance c'est pas du tout ça.

Il est vrai que j'ai vraiment beaucoup de contrôle mais je suis contrain de vérifier tout ça

Par contre j'ai peut être un code pas top non plus, est-ce que vous pouvez ce que vous en pensez SVP Merci d'avance
Voici tout mon code de contrôle de valeurs
Code :
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
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
Option Compare Database
Global Const ALERTE_ERREUR As String = " # Error #"
Global Const ALERTE_ERREUR2 As String = " # A renseigner #"
 
Public Function LireAlerteErreur() As String
   LireAlerteErreur = ALERTE_ERREUR
End Function
Public Function LireAlerteErreur2() As String
   LireAlerteErreur2 = ALERTE_ERREUR2
End Function
Public Function TesterFAMILLE(prmFAMILLE As Variant) As String
'FAMILLE0:TesterFAMILLE([FAMILLE])
Dim result As String
 
'Je contrôle que le champ FAMILLE ne soit jamais vide
If IsNull(prmFAMILLE) Then                                      'Si FAMILLE est Null
        result = ALERTE_ERREUR                                  'je mets " # Error #"
    Else                                                        'sinon
        result = CStr(prmFAMILLE)                               'je mets la valeur du champ
End If
 
TesterFAMILLE = result
 
End Function
Public Function TesterPOS_LOG(prmPOS_LOG, prmGROUPE, prmCODE_SOURCE, prmINV_ITEM_ID As Variant) As String
'POS_LOG0: TesterPOS_LOG([POS_LOG];[GROUPE];[CODE_SOURCE];[INV_ITEM_ID])
Dim result As String
 
'Je contrôle que le champ POS_LOG ne soit jamais vide
If IsNull(prmPOS_LOG) = True Then
        result = ALERTE_ERREUR
    Else
 
        If Left$(prmINV_ITEM_ID, 1) <> "L" And _
            ((prmGROUPE = "MRPRM" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or Right$(prmPOS_LOG, 3) = "BDL")) _
            Or (prmGROUPE = "MRPRM" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "MAGASIN" Or Right$(prmPOS_LOG, 3) = "BDL" Or prmPOS_LOG = "AMONT")) _
            Or (prmGROUPE = "MRPRMD" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "BDL")) _
            Or (prmGROUPE = "MRPRMD" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "AMONT")) _
            Or (prmGROUPE = "MAPCM" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "AMONT" Or prmPOS_LOG = "EXTERNE" Or Left$(prmPOS_LOG, 3) = "MAG" Or prmPOS_LOG = "CHARIOT" Or Right$(prmPOS_LOG, 3) = "BDL")) _
            Or (prmGROUPE = "MFGARN" And prmCODE_SOURCE = 1 And prmPOS_LOG = "MAGASIN") _
            Or (prmGROUPE = "MFGARN" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "AMONT")) _
            Or (prmGROUPE = "MTPRM" And prmCODE_SOURCE = 2 And prmPOS_LOG = "MAGASIN") _
            Or (prmGROUPE = "MTPRMD" And prmCODE_SOURCE = 2 And prmPOS_LOG = "MAGASIN") _
            Or (Right$(prmGROUPE, 3) = "100" And prmCODE_SOURCE = 2 And (Left$(prmPOS_LOG, 3) = "MAG" Or prmPOS_LOG = "CHARIOT" Or Right$(prmPOS_LOG, 3) = "BDL")) _
            Or (prmGROUPE = "MFCONF" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "MAG-CHAR")) _
            Or (prmGROUPE = "MFCONF" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "CHARIOT" Or Right$(prmPOS_LOG, 3) = "BDL" Or prmPOS_LOG = "AMONT" Or prmPOS_LOG = "MAG-CHAR"))) _
 _
            Or Left$(prmINV_ITEM_ID, 1) = "L" And _
            ((prmGROUPE = "MFKIT" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "BDL")) _
            Or (prmGROUPE = "MFLOT" And prmCODE_SOURCE = 1 And prmPOS_LOG = "BDL") _
            Or (prmGROUPE = "MRAFF" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "BDL")) _
            Or (prmGROUPE = "MRWAG" And prmCODE_SOURCE = 1 And prmPOS_LOG = "MAGASIN") _
            Or (prmGROUPE = "MRPRES" And prmCODE_SOURCE = 1 And prmPOS_LOG = "MAGASIN") _
            Or (prmGROUPE = "MASST" And prmCODE_SOURCE = 2 And prmPOS_LOG = "MAGASIN") _
            Or (prmGROUPE = "MAPCHM" And prmCODE_SOURCE = 1 And prmPOS_LOG = "BDL") _
            Or (prmGROUPE = "MFCONF" And prmCODE_SOURCE = 1 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "BDL" Or prmPOS_LOG = "MAG-CHAR")) _
            Or (prmGROUPE = "MAPCM" And prmCODE_SOURCE = 2 And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "EXTERNE" Or prmPOS_LOG = "CHARIOT" Or Right$(prmPOS_LOG, 3) = "BDL" Or prmPOS_LOG = "MAG-CHAR"))) Then
 
            result = CStr(prmPOS_LOG)
        Else
            result = CStr(prmPOS_LOG) & ALERTE_ERREUR
        End If
 
End If
 
TesterPOS_LOG = result
 
End Function
Public Function TesterELT_COUT(prmELT_COUT As Variant) As String
'ELT_COUT0:TesterELT_COUT([ELT_COUT])
Dim result As String
 
'Je contrôle que le champ ELT_COUT soit égale à 100
If prmELT_COUT = "100" Then                                 'Si ELT_COUT est égale à 100
        result = CStr(prmELT_COUT)                          'je mets la veleur du champ
    Else                                                    'sinon
        result = CStr(Nz(prmELT_COUT, "")) & ALERTE_ERREUR  'je mets " # Error #"
End If
 
TesterELT_COUT = result
 
End Function
Public Function TesterUTILISE_FAB(prmUTILISE_FAB As Variant) As String
'UTILISE_FAB0:TesterUTILISE_FAB([UTILISE_FAB])
Dim result As String
 
'Je contrôle que le champ UTILISE_FAB soit égale à "Y"
If prmUTILISE_FAB = "Y" Then                                    'Si UTILISE_FAB est égale à "Y"
        result = CStr(prmUTILISE_FAB)                           'je mets la valeur du champ
    Else                                                        'sinon
        result = CStr(Nz(prmUTILISE_FAB, "")) & ALERTE_ERREUR   'je mets " # Error #"
 
End If
 
TesterUTILISE_FAB = result
 
End Function
Public Function TesterPROFIL_COUT(prmPROFIL_COUT As Variant) As String
'PROFIL_COUT0:TesterPROFIL_COUT([PROFIL_COUT])
Dim result As String
 
'Je contrôle que le champ PROFIL_COUT soit égale à "STDHREEL"
If prmPROFIL_COUT = "STDHREEL" Then                             'Si PROFIL_COUT est égale à "STDHREEL"
        result = CStr(prmPROFIL_COUT)                           'je mets la valeur du champ
    Else                                                        'sinon
        result = CStr(Nz(prmPROFIL_COUT, "")) & ALERTE_ERREUR   'je mets " # Error #"
End If
 
TesterPROFIL_COUT = result
 
End Function
Public Function TesterMODE_EXPE(prmGROUPE, prmMODE_EXPE, prmSITE_REP, prmBUSINESS_UNIT As Variant) As String
'MODE_EXPE0: TesterMODE_EXPE([GROUPE];[MODE_EXPE];[SITE_REP];[BUSINESS_UNIT])
Dim result As String
 
If (Left$(prmGROUPE, 5) <> "MTPRM" And prmMODE_EXPE = "STANDARD") _
    Or (Left$(prmGROUPE, 5) Like "MTPRM" And prmMODE_EXPE = "STANDARD" And IsNull(prmSITE_REP) = True) _
        Or (Left$(prmGROUPE, 5) Like "MTPRM" And prmMODE_EXPE = "PLATEFORME" And prmSITE_REP <> prmBUSINESS_UNIT And IsNull(prmSITE_REP) = False) Then
        result = CStr(prmMODE_EXPE)
    Else
        result = CStr(Nz(prmMODE_EXPE, "")) & ALERTE_ERREUR
End If
 
TesterMODE_EXPE = result
 
End Function
Public Function TesterCREER_DA_PONCT(prmCREER_DA_PONCT, prmPOS_LOG, prmTransitoire As Variant) As String
'CREER_DA_PONCT0:TesterCREER_DA_PONCT([CREER_DA_PONCT];[POS_LOG];[Formulaires]![Formulaire_Accueil]![Transitoire])
 
Dim result As String
Dim Transitoire As Long
 
If IsNull(prmTransitoire) Then
        Transitoire = 0
    Else
        Transitoire = prmTransitoire
End If
 
If IsNull(prmPOS_LOG) = True Then
    result = CStr(Nz(prmCREER_DA_PONCT, "")) & " - Manque POS_LOG -" & ALERTE_ERREUR
    Else
 
    If (Transitoire = 1 And ((prmCREER_DA_PONCT = "Y" And prmPOS_LOG = "CHARIOT") _
        Or (prmCREER_DA_PONCT = "N" Or IsNull(prmCREER_DA_PONCT) = True) And (prmPOS_LOG = "AMONT" Or Left$(prmPOS_LOG, 3) Like "MAG" Or prmPOS_LOG = "BDL" Or prmPOS_LOG = "EXTERNE"))) _
        Or (Transitoire = 2 And ((prmCREER_DA_PONCT = "Y" And prmPOS_LOG = "CHARIOT") _
        Or (prmCREER_DA_PONCT = "Y" And prmPOS_LOG = "AMONT") Or ((prmCREER_DA_PONCT = "N" Or IsNull(prmCREER_DA_PONCT) = True) And Left$(prmPOS_LOG, 3) Like "MAG" Or prmPOS_LOG = "BDL" Or prmPOS_LOG = "EXTERNE"))) Then
            result = CStr(Nz(prmCREER_DA_PONCT, ""))
    Else
            result = CStr(Nz(prmCREER_DA_PONCT, "")) & ALERTE_ERREUR
    End If
 
End If
 
TesterCREER_DA_PONCT = result
 
End Function
Public Function TesterDELAI_RESA(prmDELAI_RESA, prmGROUPE, prmPOS_LOG As Variant) As String
'DELAI_RESA0:TesterDELAI_RESA([DELAI_RESA];[GROUPE];[POS_LOG])
Dim result As String
 
'Je contrôle que le champ DELAI_RESA est égale à 5 pour CHARIOT et 120 jours pour MRAFF et MRWAG
'Dans les autres cas nous pouvons avoir soit 5, 0 ou vide
If (prmPOS_LOG = "CHARIOT" And prmDELAI_RESA = 5) _
    Or ((prmPOS_LOG = "MRAFF" Or prmPOS_LOG = "MRWAG") And prmDELAI_RESA = 120) _
        Or ((Not prmPOS_LOG = "MRAFF" Or Not prmPOS_LOG = "MRWAG" Or Not prmPOS_LOG = "CHARIOT") _
            And (prmDELAI_RESA = 5 Or prmDELAI_RESA = 0 Or IsNull(prmDELAI_RESA))) Then
        result = CStr(Nz(prmDELAI_RESA, ""))
    Else
        result = CStr(Nz(prmDELAI_RESA, "")) & ALERTE_ERREUR
End If
 
TesterDELAI_RESA = result
 
End Function
Public Function TesterNON_COMPRIS_REAPPRO(prmNON_COMPRIS_REAPPRO, prmPOS_LOG, prmTransitoire, prmCODE_SOURCE As Variant) As String
'NON_COMPRIS_REAPPRO0:TesterNON_COMPRIS_REAPPRO([NON_COMPRIS_REAPPRO];[POS_LOG];[Formulaires]![Formulaire_Accueil]![Transitoire];[CODE_SOURCE])
 
Dim result As String
Dim Transitoire As Long
 
If IsNull(prmTransitoire) Then
        Transitoire = 0
    Else
        Transitoire = prmTransitoire
End If
 
If IsNull(prmPOS_LOG) = True Then
    result = CStr(Nz(prmNON_COMPRIS_REAPPRO, "")) & " - Manque POS_LOG -" & ALERTE_ERREUR
    Else
 
    If (Transitoire = 1 And ((prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "CHARIOT") _
        Or (prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "AMONT") Or (prmNON_COMPRIS_REAPPRO = "Y" And Left$(prmPOS_LOG, 3) Like "MAG") _
        Or (prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "BDL") Or (prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "EXTERNE")) _
        Or (Transitoire = 2 And ((prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "CHARIOT") Or (prmNON_COMPRIS_REAPPRO = "Y" And prmPOS_LOG = "AMONT") Or (prmCODE_SOURCE = 1 And prmNON_COMPRIS_REAPPRO = "Y" And Left(prmPOS_LOG, 3) Like "MAG") Or (prmCODE_SOURCE = 2 And prmNON_COMPRIS_REAPPRO <> "Y" And Left$(prmPOS_LOG, 3) Like "MAG") Or (prmCODE_SOURCE = 1 And prmNON_COMPRIS_REAPPRO = "Y" And Left$(prmPOS_LOG, 3) Like "BDL") Or (prmCODE_SOURCE = 2 And prmNON_COMPRIS_REAPPRO <> "Y" And Left$(prmPOS_LOG, 3) Like "BDL") Or (prmNON_COMPRIS_REAPPRO = "Y" And prompos_log = "EXTERNE")))) Then
 
            result = CStr(Nz(prmNON_COMPRIS_REAPPRO, ""))
    Else
            result = CStr(Nz(prmNON_COMPRIS_REAPPRO, "")) & ALERTE_ERREUR
    End If
 
End If
 
TesterNON_COMPRIS_REAPPRO = result
 
End Function
Public Function TesterINCLURE_QTE_ENCOURS(prmINCLURE_QTE_ENCOURS As Variant) As String
'INCLURE_QTE_ENCOURS0:TesterINCLURE_QTE_ENCOURS([INCLURE_QTE_ENCOURS])
Dim result As String
 
'Je contrôle que le champ INCLURE_QTE_ENCOURS soit égale à "Y"
If prmINCLURE_QTE_ENCOURS = "Y" Then                                    'Si INCLURE_QTE_ENCOURS est égale à "Y"
        result = CStr(prmINCLURE_QTE_ENCOURS)                           'je mets la valeur du champ
    Else                                                                'sinon
        result = CStr(Nz(prmINCLURE_QTE_ENCOURS, "")) & ALERTE_ERREUR   'je mets " # Error #"
End If
 
TesterINCLURE_QTE_ENCOURS = result
 
End Function
Public Function TesterOPT_QTE_REAPPRO(prmOPT_QTE_REAPPRO As Variant) As String
'OPT_QTE_REAPPRO0:TesterOPT_QTE_REAPPRO([OPT_QTE_REAPPRO])
Dim result As String
 
'Je contrôle que le champ OPT_QTE_REAPPRO soit égale à "99"
If prmOPT_QTE_REAPPRO = "99" Then                                                                       'Si OPT_QTE_REAPPRO est égale à "99"
        result = CStr(prmOPT_QTE_REAPPRO)                                                               'je mets la valeur du champ
    Else                                                                                                'sinon
        result = CStr(Nz(prmOPT_QTE_REAPPRO, "")) & ALERTE_ERREUR & " -> Mettre Val/dflt entité = 99"   'je mets la valeur du champ avec " # Error #" -> Mettre Val/dflt entité = 99
End If
 
TesterOPT_QTE_REAPPRO = result
 
End Function
Public Function TesterQTE_REAPPRO(prmQTE_REAPPRO, prmTransitoire As Variant) As String
'QTE_REAPPRO0:TesterQTE_REAPPRO([QTE_REAPPRO];[Formulaires]![Formulaire_Accueil]![Transitoire])
Dim result As String
Dim Transitoire As Long
 
If IsNull(prmTransitoire) Then
        Transitoire = 0
    Else
        Transitoire = prmTransitoire
End If
 
If (Transitoire = 1 And prmQTE_REAPPRO = 0) Or (Transitoire = 2 And prmQTE_REAPPRO >= 0) Then
    result = CStr(prmQTE_REAPPRO)
    Else
    result = CStr(Nz(prmQTE_REAPPRO, "")) & ALERTE_ERREUR
End If
 
TesterQTE_REAPPRO = result
 
End Function
Public Function TesterPOINT_COMMANDE(prmPOINT_COMMANDE, prmTransitoire As Variant) As String
'POINT_COMMANDE0:TesterPOINT_COMMANDE([POINT_COMMANDE];[Formulaires]![Formulaire_Accueil]![Transitoire])
Dim result As String
Dim Transitoire As Long
 
If IsNull(prmTransitoire) Then
        Transitoire = 0
    Else
        Transitoire = prmTransitoire
End If
 
If (Transitoire = 1 And prmPOINT_COMMANDE = 0) Or (Transitoire = 2 And prmPOINT_COMMANDE >= 0) Then
    result = CStr(prmPOINT_COMMANDE)
    Else
    result = CStr(Nz(prmPOINT_COMMANDE, "")) & ALERTE_ERREUR
End If
 
TesterPOINT_COMMANDE = result
 
End Function
Public Function TesterPOINT_REAPPRO(prmPOINT_REAPPR0, prmPOS_LOG, prmCODE_SOURCE As Variant) As String
'POINT_REAPPRO0:TesterPOINT_REAPPRO([POINT_REAPPRO];[POS_LOG];[CODE_SOURCE])
Dim result As String
 
'Je contrôle que le champ POINT_REAPPRO soit égale à 0
If (prmPOINT_REAPPR0 = 0 And prmPOS_LOG <> "MAG-BDL") _
        Or (prmPOINT_REAPPR0 = 0 And prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "1") _
            Or (prmPOINT_REAPPR0 > 0 And prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2") Then  'Si POINT_REAPPRO est égale à 0
        result = CStr(prmPOINT_REAPPR0)                                                         'je mets la veleur du champ
    Else                                                                                        'sinon
        result = CStr(Nz(prmPOINT_REAPPR0, "")) & ALERTE_ERREUR                                 'je mets " # Error #"
End If
 
TesterPOINT_REAPPRO = result
 
End Function
Public Function TesterQTE_MIN_ENCOURS(prmQTE_MIN_ENCOURS, prmPOS_LOG, prmCODE_SOURCE As Variant) As String
'QTE_MIN_ENCOURS0:TesterQTE_MIN_ENCOURS([QTE_MIN_ENCOURS];[POS_LOG];[CODE_SOURCE])
Dim result As String
 
'Je contrôle que le champ QTE_MIN_ENCOURS soit égale à 0 sauf pour les MAG-BDL > 0 en code source 2
If (prmQTE_MIN_ENCOURS = 0 And prmPOS_LOG <> "MAG-BDL") _
        Or (prmQTE_MIN_ENCOURS = 0 And prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "1") _
            Or (prmQTE_MIN_ENCOURS > 0 And prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2") Then  'Si QTE_MIN_ENCOURS est égale à 0
        result = CStr(prmQTE_MIN_ENCOURS)                                                         'je mets la veleur du champ
    Else                                                                                          'sinon
        result = CStr(Nz(prmQTE_MIN_ENCOURS, "")) & ALERTE_ERREUR                                 'je mets " # Error #"
End If
 
TesterQTE_MIN_ENCOURS = result
 
End Function
Public Function TesterMULTIPLE_SORTIE(prmMULTIPLE_SORTIE, prmPOS_LOG As Variant) As String
'MULTIPLE_SORTIE0:TesterMULTIPLE_SORTIE([MULTIPLE_SORTIE];[POS_LOG])
Dim result As String
 
'Je contrôle que le champ MULTIPLE_SORTIE soit égale à 1 sauf pour les MAG-BDL >=1
If (prmMULTIPLE_SORTIE = 1 And prmPOS_LOG <> "MAG-BDL") _
        Or (prmMULTIPLE_SORTIE >= 1 And prmPOS_LOG = "MAG-BDL") Then    'Si MULTIPLE_SORTIE est égale à 0
        result = CStr(prmMULTIPLE_SORTIE)                               'je mets la veleur du champ
    Else                                                                'sinon
        result = CStr(Nz(prmMULTIPLE_SORTIE, "")) & ALERTE_ERREUR       'je mets " # Error #"
End If
 
TesterMULTIPLE_SORTIE = result
 
End Function
Public Function TesterEMPL_REAPPRO(prmPOS_LOG, prmCODE_SOURCE, prmEMPL_REAPPRO, prmEMPL_RGT_DEFAUT) As String
'EMPL_REAPPRO0:TesterEMPL_REAPPRO([POS_LOG];[CODE_SOURCE];[EMPL_REAPPRO];[EMPL_RGT_DEFAUT])
Dim result As String
 
'je contrôle que le champ EMPL_REAPPRO soit vide sauf dans le cas d'un MAG-BDL où il est égale à l'EMPL_RGT_DEFAUT
If prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2" And prmEMPL_REAPPRO = prmEMPL_RGT_DEFAUT Then
        result = CStr(prmEMPL_REAPPRO)
    Else
        If IsNull(prmEMPL_REAPPRO) And prmPOS_LOG <> "MAG-BDL" Then
            result = CStr(Nz(prmEMPL_REAPPRO, ""))
                Else
                    result = CStr(Nz(prmEMPL_REAPPRO, "")) & ALERTE_ERREUR
        End If
End If
 
TesterEMPL_REAPPRO = result
 
End Function
Public Function TesterEMPL_REAPPRO_NIV1(prmPOS_LOG, prmCODE_SOURCE, prmEMPL_REAPPRO_NIV1, prmEMPL_RGT_DEFAUT_NIV1) As String
'EMPL_REAPPRO_NIV10:TesterEMPL_REAPPRO_NIV1([POS_LOG];[CODE_SOURCE];[EMPL_REAPPRO_NIV1];[EMPL_RGT_DEFAUT_NIV1])
Dim result As String
 
'je contrôle que le champ EMPL_REAPPRO_NIV1 soit vide sauf dans le cas d'un MAG-BDL où il est égale à l'EMPL_RGT_DEFAUT_NIV1
If prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2" And prmEMPL_REAPPRO_NIV1 = prmEMPL_RGT_DEFAUT_NIV1 Then
        result = CStr(prmEMPL_REAPPRO_NIV1)
    Else
        If IsNull(prmEMPL_REAPPRO_NIV1) And prmPOS_LOG <> "MAG-BDL" Then
            result = CStr(Nz(prmEMPL_REAPPRO_NIV1, ""))
                Else
                    result = CStr(Nz(prmEMPL_REAPPRO_NIV1, "")) & ALERTE_ERREUR
        End If
End If
 
TesterEMPL_REAPPRO_NIV1 = result
 
End Function
Public Function TesterEMPL_REAPPRO_NIV2(prmPOS_LOG, prmCODE_SOURCE, prmEMPL_REAPPRO_NIV2, prmEMPL_RGT_DEFAUT_NIV2) As String
'EMPL_REAPPRO_NIV20:TesterEMPL_REAPPRO_NIV2([POS_LOG];[CODE_SOURCE];[EMPL_REAPPRO_NIV2];[EMPL_RGT_DEFAUT_NIV2])
Dim result As String
 
'je contrôle que le champ EMPL_REAPPRO_NIV2 soit vide sauf dans le cas d'un MAG-BDL où il est égale à l'EMPL_RGT_DEFAUT_NIV2
If prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2" And prmEMPL_REAPPRO_NIV2 = prmEMPL_RGT_DEFAUT_NIV2 Then
        result = CStr(prmEMPL_REAPPRO_NIV2)
    Else
        If IsNull(prmEMPL_REAPPRO_NIV2) And prmPOS_LOG <> "MAG-BDL" Then
            result = CStr(Nz(prmEMPL_REAPPRO_NIV2, ""))
                Else
                    result = CStr(Nz(prmEMPL_REAPPRO_NIV2, "")) & ALERTE_ERREUR
        End If
End If
 
TesterEMPL_REAPPRO_NIV2 = result
 
End Function
Public Function TesterEMPL_REAPPRO_NIV3(prmPOS_LOG, prmCODE_SOURCE, prmEMPL_REAPPRO_NIV3, prmEMPL_RGT_DEFAUT_NIV3) As String
'EMPL_REAPPRO_NIV30:TesterEMPL_REAPPRO_NIV3([POS_LOG];[CODE_SOURCE];[EMPL_REAPPRO_NIV3];[EMPL_RGT_DEFAUT_NIV3])
Dim result As String
 
'je contrôle que le champ EMPL_REAPPRO_NIV3 soit vide sauf dans le cas d'un MAG-BDL où il est égale à l'EMPL_RGT_DEFAUT_NIV3
If prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2" And prmEMPL_REAPPRO_NIV3 = prmEMPL_RGT_DEFAUT_NIV3 Then
        result = CStr(prmEMPL_REAPPRO_NIV3)
    Else
        If IsNull(prmEMPL_REAPPRO_NIV3) And prmPOS_LOG <> "MAG-BDL" Then
            result = CStr(Nz(prmEMPL_REAPPRO_NIV3, ""))
                Else
                    result = CStr(Nz(prmEMPL_REAPPRO_NIV3, "")) & ALERTE_ERREUR
        End If
End If
 
TesterEMPL_REAPPRO_NIV3 = result
 
End Function
Public Function TesterEMPL_REAPPRO_NIV4(prmPOS_LOG, prmCODE_SOURCE, prmEMPL_REAPPRO_NIV4, prmEMPL_RGT_DEFAUT_NIV4) As String
'EMPL_REAPPRO_NIV40:TesterEMPL_REAPPRO_NIV4([POS_LOG];[CODE_SOURCE];[EMPL_REAPPRO_NIV4];[EMPL_RGT_DEFAUT_NIV4])
Dim result As String
 
'je contrôle que le champ EMPL_REAPPRO_NIV4 soit vide sauf dans le cas d'un MAG-BDL où il est égale à l'EMPL_RGT_DEFAUT_NIV4
If prmPOS_LOG = "MAG-BDL" And prmCODE_SOURCE = "2" And prmEMPL_REAPPRO_NIV4 = prmEMPL_RGT_DEFAUT_NIV4 Then
        result = CStr(prmEMPL_REAPPRO_NIV4)
    Else
        If IsNull(prmEMPL_REAPPRO_NIV4) And prmPOS_LOG <> "MAG-BDL" Then
            result = CStr(Nz(prmEMPL_REAPPRO_NIV4, ""))
                Else
                    result = CStr(Nz(prmEMPL_REAPPRO_NIV4, "")) & ALERTE_ERREUR
        End If
End If
 
TesterEMPL_REAPPRO_NIV4 = result
 
End Function
Public Function TesterMODE_SORTIE(prmMODE_SORTIE, prmPOS_LOG, prmGROUPE As Variant) As String
'MODE_SORTIE0:TesterMODE_SORTIE([MODE_SORTIE];[POS_LOG];[GROUPE])
Dim result As String
 
'Je contrôle que le champ MODE_SORTIE soit SORTIE ou REAPPRO
 
If (prmMODE_SORTIE = "SORTIE" And Not prmGROUPE = "MRAFF" And (prmPOS_LOG = "AMONT" Or prmPOS_LOG = "EXTERNE" Or prmPOS_LOG = "MAG-CHAR" Or prmPOS_LOG = "MAGASIN")) _
    Or (prmMODE_SORTIE = "REAPPRO" And (prmPOS_LOG = "BDL" Or prmPOS_LOG = "CHARIOT" Or prmPOS_LOG = "MAG-BDL")) _
        Or (prmMODE_SORTIE = "REAPPRO" And (prmPOS_LOG = "MAGASIN" Or prmPOS_LOG = "BDL") And prmGROUPE = "MRAFF") Then
        result = CStr(prmMODE_SORTIE)
    Else
        result = CStr(Nz(prmMODE_SORTIE, "")) & ALERTE_ERREUR
End If
 
TesterMODE_SORTIE = result
 
End Function
Public Function TesterZONE_PROD(prmZONE_PROD, prmCODE_SOURCE As Variant) As String
'ZONE_PROD0:TesterZONE_PROD([ZONE_PROD];[CODE_SOURCE])
Dim result As String
 
'Je contrôle que le champ ZONE_PROD soit non vide qu'en artilce FAB
'Je contrôle que le champ ZONE_PROD soit vide qu'en Article ACH/TRANSF
If (prmCODE_SOURCE = "1" And IsNull(prmZONE_PROD) = False) _
    Or (prmCODE_SOURCE = "2" And IsNull(prmZONE_PROD) = True) _
    Then
        result = CStr(Nz(prmZONE_PROD, ""))                      'je mets la valeur du champ
    Else                                                         'sinon
        result = CStr(Nz(prmZONE_PROD, "")) & ALERTE_ERREUR      'je mets la valeur du champ avec " # Error #"
 
End If
 
TesterZONE_PROD = result
 
End Function
Public Function TesterNMCL_PRINC_ASSOCIEE(prmNMCL_PRINC_ASSOCIEE, prmINV_ITEM_ID As Variant) As String
'NMCL_PRINC_ASSOCIEE0:TesterNMCL_PRINC_ASSOCIEE([NMCL_PRINC_ASSOCIEE];[INV_ITEM_ID])
Dim result As String
 
'Je contrôle que le champ NMCL_PRINC_ASSOCIEE soit égale à INV_ITEM_ID
If prmNMCL_PRINC_ASSOCIEE = prmINV_ITEM_ID Then                           'Si NMCL_PRINC_ASSOCIEE est égale à l'article
        result = CStr(prmNMCL_PRINC_ASSOCIEE)                             'je mets la valeur du champ
    Else                                                                  'sinon
        result = CStr(Nz(prmNMCL_PRINC_ASSOCIEE, "")) & ALERTE_ERREUR     'je mets la valeur du champ avec " # Error #"
End If
 
TesterNMCL_PRINC_ASSOCIEE = result
 
End Function
Public Function TesterOPTION_GAMME_PRONC(prmOPTION_GAMME_PRONC As Variant) As String
'OPTION_GAMME_PRONC0:TesterOPTION_GAMME_PRONC([OPTION_GAMME_PRONC])
Dim result As String
 
'Je contrôle que le champ OPTION_GAMME soit égale à "ITM"
If prmOPTION_GAMME_PRONC = "ITM" Then                                   'Si OPTION_GAMME est égale à "ITM"
        result = CStr(prmOPTION_GAMME_PRONC)                            'je mets la valeur du champ
    Else                                                                'sinon
        result = CStr(Nz(prmOPTION_GAMME_PRONC, "")) & ALERTE_ERREUR    'je mets la valeur du champ avec " # Error #"
End If
 
TesterOPTION_GAMME_PRONC = result
 
End Function
Public Function TesterGAMME_REF_ARTICLE(prmGAMME_REF_ARTICLE, prmINV_ITEM_ID As Variant) As String
'GAMME_REF_ARTICLE0:TesterGAMME_REF_ARTICLE([GAMME_REF_ARTICLE];[INV_ITEM_ID])
Dim result As String
 
'Je contrôle que le champ GAMME_REF_ARTICLE soit égale à INV_ITEM_ID
If prmGAMME_REF_ARTICLE = prmINV_ITEM_ID Then                           'Si GAMME_REF_ARTICLE est égale à l'article
        result = CStr(prmGAMME_REF_ARTICLE)                             'je mets la valeur du champ
    Else                                                                'sinon
        result = CStr(Nz(prmGAMME_REF_ARTICLE, "")) & ALERTE_ERREUR     'je mets la valeur du champ avec " # Error #"
End If
 
TesterGAMME_REF_ARTICLE = result
 
End Function
Public Function TesterCONTROLE_OPTION_FAB(prmCONTROLE_OPTION_FAB As Variant) As String
'CONTROLE_OPTION_FAB0:TesterCONTROLE_OPTION_FAB([CONTROLE_OPTION_FAB])
Dim result As String
 
'Je contrôle que le champ CONTROLE_OPTION_FAB soit égale à "01"
If prmCONTROLE_OPTION_FAB = "01" Then                                   'Si CONTROLE_OPTION_FAB est égale à "01"
        result = CStr(prmCONTROLE_OPTION_FAB)                           'je mets la valeur du champ
    Else                                                                'sinon
        result = CStr(Nz(prmCONTROLE_OPTION_FAB, "")) & ALERTE_ERREUR   'je mets la valeur du champ avec " # Error #"
End If
 
TesterCONTROLE_OPTION_FAB = result
 
End Function
Public Function TesterNMCL(prmNMCL, prmCODE_SOURCE As Variant) As String
'NMCL0:TesterNMCL([NMCL];[CODE_SOURCE])
Dim result As String
 
'Je contrôle que le champ NMCL soit égale à 1 quand article fabriqué (Code source 1)
'Je contrôle que le champ NMCL soit égale à 0 quand article acheté ou transféré (Code source 2)
If (prmNMCL = "1" And prmCODE_SOURCE = "1") _
   Or (prmNMCL = "0" And prmCODE_SOURCE = "2") _
     Then
        result = CStr(prmNMCL)                              'je mets la valeur du champ
     Else                                                   'sinon
        result = CStr(Nz(prmNMCL, "")) & ALERTE_ERREUR      'je mets la valeur du champ avec " # Error #"
End If
 
TesterNMCL = result
 
End Function
Public Function TesterGAMME(prmGAMME, prmCODE_SOURCE As Variant) As String
'GAMME0:TesterGAMME([GAMME];[CODE_SOURCE])
Dim result As String
 
'Je contrôle que le champ GAMME soit égale à 1 quand article fabriqué (Code source 1)
'Je contrôle que le champ GAMME soit égale à 0 quand article acheté ou transféré (Code source 2)
If (prmGAMME = "1" And prmCODE_SOURCE = "1") _
   Or (prmGAMME = "0" And prmCODE_SOURCE = "2") _
     Then
        result = CStr(prmGAMME)                             'je mets la valeur du champ
     Else                                                   'sinon
        result = CStr(Nz(prmGAMME, "")) & ALERTE_ERREUR     'je mets la valeur du champ avec " # Error #"
End If
 
TesterGAMME = result
 
End Function
Public Function TesterCODE_PLANIF(prmCODE_PLANIF As Variant) As String
'CODE_PLANIF0:TesterCODE_PLANIF([CODE_PLANIF])
Dim result As String
 
'Je contrôle que le champ CODE_PLANIF ne soit jamais vide
If IsNull(prmCODE_PLANIF) Then                                  'Si CODE_PLANIF est Null alors
        result = ALERTE_ERREUR                                  'je mets " # Error #"
    Else                                                        'sinon
        result = CStr(prmCODE_PLANIF)                           'je mets la valeur du champ
End If
 
TesterCODE_PLANIF = result
 
End Function
Public Function TesterHORIZON_MESS_EXCEPT(prmHORIZON_MESS_EXCEPT As Variant) As String
'HORIZON_MESS_EXCEPT0:TesterHORIZON_MESS_EXCEPT([HORIZON_MESS_EXCEPT])
Dim result As String
 
'Je contrôle que le champ HORIZON_MESS_EXCEPT soit égale à "999"
If prmHORIZON_MESS_EXCEPT = "999" Then                                    'Si HORIZON_MESS_EXCEPT est égale à "999"
        result = CStr(prmHORIZON_MESS_EXCEPT)                             'je mets la valeur du champ
    Else                                                                  'sinon
        result = CStr(Nz(prmHORIZON_MESS_EXCEPT, "")) & ALERTE_ERREUR     'je mets " # Error #"
 
End If
 
TesterHORIZON_MESS_EXCEPT = result
 
End Function
Public Function TesterPLANIFIE_PAR(prmPLANIFIE_PAR, prmCODE_SOURCE, prmPOS_LOG, prmGROUPE As Variant) As String
'PLANIFIE_PAR0:TesterPLANIFIE_PAR([PLANIFIE_PAR];[CODE_SOURCE];[POS_LOG];[GROUPE])
Dim result As String
 
If IsNull(prmPOS_LOG) = True Then
    result = CStr(Nz(prmCREER_DA_PONCT, "")) & " - Manque POS_LOG -" & ALERTE_ERREUR
 
    Else
 
    If prmCODE_SOURCE = 1 And prmPLANIFIE_PAR = 3 _
        Or (prmCODE_SOURCE = 2 And prmPLANIFIE_PAR = 2 And (Left$(prmGROUPE, 5) = "MTPRM" Or prmGROUPE = "IT100")) _
        Or (prmCODE_SOURCE = 2 And (prmPLANIFIE_PAR = 2 Or prmPLANIFIE_PAR = 3) And (prmPOS_LOG = "AMONT" Or prmPOS_LOG = "EXTERNE")) _
        Or (prmCODE_SOURCE = 2 And (prmPLANIFIE_PAR = 2 Or prmPLANIFIE_PAR = 4) And (prmPOS_LOG = "CHARIOT") _
        Or (prmCODE_SOURCE = 2 And prmPLANIFIE_PAR = 3 And Left$(prmPOS_LOG, 3) = "MAG" Or Right$(prmPOS_LOG, 3) = "BDL")) Then
 
            result = CStr(prmPLANIFIE_PAR)
        Else
            result = CStr(Nz(prmPLANIFIE_PAR, "")) & ALERTE_ERREUR
    End If
End If
 
TesterPLANIFIE_PAR = result
End Function
Public Function TesterARTICLE_PLANIF_DEMANDE(prmGROUPE, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmCODE_SOURCE As Variant) As String
'ARTICLE_PLANIF_DEMANDE0:TesterARTICLE_PLANIF_DEMANDE([GROUPE];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[CODE_SOURCE])
Dim result As String
 
If ((Left$(prmGROUPE, 5) Like "MTPRM" Or prmGROUPE = "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N") _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N") _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y") _
    Or (prmCODE_SOURCE = 1 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "Y") Then
 
        result = CStr(prmARTICLE_PLANIF_DEMANDE)
    Else
        result = CStr(Nz(prmARTICLE_PLANIF_DEMANDE, "")) & ALERTE_ERREUR
End If
 
TesterARTICLE_PLANIF_DEMANDE = result
 
End Function
Public Function TesterUTIL_SITE_DESTINATAIRE(prmGROUPE, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmCODE_SOURCE As Variant) As String
'UTIL_SITE_DESTINATAIRE0:TesterUTIL_SITE_DESTINATAIRE([GROUPE];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[CODE_SOURCE])
Dim result As String
 
If ((Left$(prmGROUPE, 5) Like "MTPRM" Or prmGROUPE = "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N") _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N") _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y") _
    Or (prmCODE_SOURCE = 1 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "Y") Then
 
        result = CStr(prmUTIL_SITE_DESTINATAIRE)
    Else
        result = CStr(Nz(prmUTIL_SITE_DESTINATAIRE, "")) & ALERTE_ERREUR
End If
 
TesterUTIL_SITE_DESTINATAIRE = result
 
End Function
Public Function TesterAS_PERIODE_FIXE(prmGROUPE, prmCODE_SOURCE, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmAS_PERIODE_FIXE As Variant) As String
'AS_PERIODE_FIXE0:TesterAS_PERIODE_FIXE([GROUPE];[CODE_SOURCE];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[AS_PERIODE_FIXE])
Dim result As String
 
If ((Left$(prmGROUPE, 5) = "MTPRM" Or prmGROUPE = "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And prmAS_PERIODE_FIXE = 7) _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And prmAS_PERIODE_FIXE <= 30) _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And prmAS_PERIODE_FIXE = 7) _
    Or (prmCODE_SOURCE = 1 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "Y" And prmAS_PERIODE_FIXE = 1) Then
        result = CStr(prmAS_PERIODE_FIXE)
    Else
        result = CStr(Nz(prmAS_PERIODE_FIXE, "")) & ALERTE_ERREUR
End If
 
TesterAS_PERIODE_FIXE = result
 
End Function
Public Function TesterUTIL_DEBUT_FEN(prmUTIL_DEBUT_FEN As Variant) As String
'UTIL_DEBUT_FEN0:TesterUTIL_DEBUT_FEN([UTIL_DEBUT_FEN])
Dim result As String
 
'Je contrôle que le champ UTIL_DEBUT_FEN soit égale à "Y"
If prmUTIL_DEBUT_FEN = "Y" Then                                     'Si UTIL_DEBUT_FEN est égale à "Y"
        result = CStr(prmUTIL_DEBUT_FEN)                            'je mets la valeur du champ
    Else                                                            'sinon
        result = CStr(Nz(prmUTIL_DEBUT_FEN, "")) & ALERTE_ERREUR    'je mets " # Error #"
 
End If
 
TesterUTIL_DEBUT_FEN = result
 
End Function
Public Function TesterTYPE_MODIF_ORDRE(prmGROUPE, prmCODE_SOURCE, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmTYPE_MODIF_ORDRE As Variant) As String
'TYPE_MODIF_ORDRE0:TesterTYPE_MODIF_ORDRE([GROUPE];[CODE_SOURCE];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[TYPE_MODIF_ORDRE])
 
Dim result As String
 
If ((Left$(prmGROUPE, 5) = "MTPRM" Or prmGROUPE = "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And prmTYPE_MODIF_ORDRE = "ACHAT") _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And (prmTYPE_MODIF_ORDRE = "ACHAT" Or prmTYPE_MODIF_ORDRE = "VIDE")) _
    Or ((Left$(prmGROUPE, 5) <> "MTPRM" Or prmGROUPE <> "IT100") And prmCODE_SOURCE = 2 And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And (prmTYPE_MODIF_ORDRE = "TRANSF" Or prmTYPE_MODIF_ORDRE = "VIDE")) _
    Or (prmCODE_SOURCE = 1 And prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "Y" And (prmTYPE_MODIF_ORDRE = "FAB" Or prmTYPE_MODIF_ORDRE = "VIDE")) Then
        result = CStr(prmTYPE_MODIF_ORDRE)
    Else
        result = CStr(Nz(prmTYPE_MODIF_ORDRE, "")) & ALERTE_ERREUR
End If
 
TesterTYPE_MODIF_ORDRE = result
 
End Function
Public Function TesterQTE_MINI(prmMULTIPLE_MODIF_ORDRE, prmTYPE_MODIF_ORDRE As Variant) As String
'QTE_MINI0:TesterQTE_MINI([MULTIPLE_MODIF_ORDRE];[TYPE_MODIF_ORDRE])
Dim result As String
 
If (prmTYPE_MODIF_ORDRE = "VIDE" And prmMULTIPLE_MODIF_ORDRE = -1) Or (prmTYPE_MODIF_ORDRE <> "VIDE" And prmMULTIPLE_MODIF_ORDRE >= 1) Then
        result = CStr(prmMULTIPLE_MODIF_ORDRE)
    Else
        result = CStr(Nz(prmMULTIPLE_MODIF_ORDRE, "")) & ALERTE_ERREUR
End If
 
TesterQTE_MINI = result
 
End Function
Public Function TesterQTE_MULTI(prmMULTIPLE_MODIF_ORDRE_1, prmTYPE_MODIF_ORDRE As Variant) As String
'QTE_MULTI0:TesterQTE_MINI([MULTIPLE_MODIF_ORDRE_1];[TYPE_MODIF_ORDRE])
Dim result As String
 
If (prmTYPE_MODIF_ORDRE = "VIDE" And prmMULTIPLE_MODIF_ORDRE_1 = -1) Or (prmTYPE_MODIF_ORDRE <> "VIDE" And prmMULTIPLE_MODIF_ORDRE_1 >= 1) Then
        result = CStr(prmMULTIPLE_MODIF_ORDRE_1)
    Else
        result = CStr(Nz(prmMULTIPLE_MODIF_ORDRE_1, "")) & ALERTE_ERREUR
End If
 
TesterQTE_MULTI = result
 
End Function
Public Function TesterGESTION_GPAO(prmGESTION_GPAO, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'GESTION_GPAO0:TesterGESTION_GPAO([GESTION_GPAO];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Left$(prmINV_ITEM_ID, 1) <> "L" And IsNull(prmGESTION_GPAO) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And prmCODE_SOURCE = 1 And IsNull(prmGESTION_GPAO) = False) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And prmCODE_SOURCE = 2 And IsNull(prmGESTION_GPAO) = True)) Then
 
        result = CStr(Nz(prmGESTION_GPAO, ""))
    Else
        result = CStr(Nz(prmGESTION_GPAO, "")) & ALERTE_ERREUR
End If
 
TesterGESTION_GPAO = result
 
End Function
Public Function TesterCRITICITE_LOG(prmCRITICITE_LOG As Variant) As String
'CRITICITE_LOG0:TesterCRITICITE_LOG([CRITICITE_LOG])
Dim result As String
 
'Je contrôle que le champ CRITICITE_LOG ne soit jamais vide
If IsNull(prmCRITICITE_LOG) Then            'Si CRITICITE_LOG est Null
        result = ALERTE_ERREUR2             'je mets " # A renseigner #"
    Else                                    'sinon
        result = CStr(prmCRITICITE_LOG)     'je mets la valeur du champ
End If
 
TesterCRITICITE_LOG = result
 
End Function
Public Function TesterJOUR_EN_TRANSIT(prmJOUR_EN_TRANSIT, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'JOUR_EN_TRANSIT0:TesterJOUR_EN_TRANSIT([JOUR_EN_TRANSIT];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Right$(prmINV_ITEM_ID, 4) = "CT10" And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmJOUR_EN_TRANSIT) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And IsNull(prmJOUR_EN_TRANSIT) = True) _
    Or (prmCODE_SOURCE = 1 And IsNull(prmJOUR_EN_TRANSIT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmJOUR_EN_TRANSIT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And IsNull(prmJOUR_EN_TRANSIT) = False)) Then
 
        result = CStr(Nz(prmJOUR_EN_TRANSIT, ""))
    Else
        result = CStr(Nz(prmJOUR_EN_TRANSIT, "")) & ALERTE_ERREUR
End If
 
TesterJOUR_EN_TRANSIT = result
 
End Function
Public Function TesterRDT_TRANSFERT(prmRDT_TRANSFERT, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'RDT_TRANSFERT0:TesterRDT_TRANSFERT([RDT_TRANSFERT];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Right$(prmINV_ITEM_ID, 4) = "CT10" And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmRDT_TRANSFERT) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And IsNull(prmRDT_TRANSFERT) = True) _
    Or (prmCODE_SOURCE = 1 And IsNull(prmRDT_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmRDT_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And prmRDT_TRANSFERT = 100)) Then
 
        result = CStr(Nz(prmRDT_TRANSFERT, ""))
    Else
        result = CStr(Nz(prmRDT_TRANSFERT, "")) & ALERTE_ERREUR
End If
 
TesterRDT_TRANSFERT = result
 
End Function
Public Function TesterDATE_EFFET_TRANSFERT(prmDATE_EFFET_TRANSFERT, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'DATE_EFFET_TRANSFERT0:TesterDATE_EFFET_TRANSFERT([DATE_EFFET_TRANSFERT];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Right$(prmINV_ITEM_ID, 4) = "CT10" And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmDATE_EFFET_TRANSFERT) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And IsNull(prmDATE_EFFET_TRANSFERT) = True) _
    Or (prmCODE_SOURCE = 1 And IsNull(prmDATE_EFFET_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmDATE_EFFET_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And prmDATE_EFFET_TRANSFERT <= Date)) Then
 
        result = CStr(Nz(prmDATE_EFFET_TRANSFERT, ""))
    Else
        result = CStr(Nz(prmDATE_EFFET_TRANSFERT, "")) & ALERTE_ERREUR
End If
 
TesterDATE_EFFET_TRANSFERT = result
 
End Function
Public Function TesterBU_TRANSFERT(prmBU_TRANSFERT, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'BU_TRANSFERT0:TesterBU_TRANSFERT([BU_TRANSFERT];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Right$(prmINV_ITEM_ID, 4) = "CT10" And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmBU_TRANSFERT) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And IsNull(prmBU_TRANSFERT) = True) _
    Or (prmCODE_SOURCE = 1 And IsNull(prmBU_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmBU_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And IsNull(prmBU_TRANSFERT) = False)) Then
 
        result = CStr(Nz(prmBU_TRANSFERT, ""))
    Else
        result = CStr(Nz(prmBU_TRANSFERT, "")) & ALERTE_ERREUR
End If
 
TesterBU_TRANSFERT = result
 
End Function
Public Function TesterBU_SOURCE_TRANSFERT(prmBU_SOURCE_TRANSFERT, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmINV_ITEM_ID, prmCODE_SOURCE As Variant) As String
'BU_SOURCE_TRANSFERT0:TesterBU_SOURCE_TRANSFERT([BU_SOURCE_TRANSFERT];[ARTICLE_PLANIF_DEMANDE];[UTIL_SITE_DESTINATAIRE];[INV_ITEM_ID];[CODE_SOURCE])
Dim result As String
 
If ((Right$(prmINV_ITEM_ID, 4) = "CT10" And prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmBU_SOURCE_TRANSFERT) = True) _
    Or (Left$(prmINV_ITEM_ID, 1) = "L" And IsNull(prmBU_SOURCE_TRANSFERT) = True) _
    Or (prmCODE_SOURCE = 1 And IsNull(prmBU_SOURCE_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "N" And prmUTIL_SITE_DESTINATAIRE = "N" And IsNull(prmBU_SOURCE_TRANSFERT) = True) _
    Or (prmARTICLE_PLANIF_DEMANDE = "Y" And prmUTIL_SITE_DESTINATAIRE = "Y" And IsNull(prmBU_SOURCE_TRANSFERT) = False)) Then
 
        result = CStr(Nz(prmBU_SOURCE_TRANSFERT, ""))
    Else
        result = CStr(Nz(prmBU_SOURCE_TRANSFERT, "")) & ALERTE_ERREUR
End If
 
TesterBU_SOURCE_TRANSFERT = result
 
End Function
Public Function TesterTYPE_RGT(prmTYPE_RGT As Variant) As String
'TYPE_RGT0:TesterTYPE_RGT([TYPE_RGT])
Dim result As String
 
'Je contrôle que le champ TYPE_RGT soit égale à "PROPRIET"
If prmTYPE_RGT = "PROPRIET" Then                               'Si TYPE_RGT est égale à "PROPRIET"
        result = CStr(prmTYPE_RGT)                             'je mets la valeur du champ
    Else                                                       'sinon
        result = CStr(Nz(prmTYPE_RGT, "")) & ALERTE_ERREUR     'je mets " # Error #"
 
End If
 
TesterTYPE_RGT = result
 
End Function
Public Function TesterEMPL_RGT_DEFAUT(prmEMPL_RGT_DEFAUT As Variant) As String
'EMPL_RGT_DEFAUT0: TesterEMPL_RGT_DEFAUT ([EMPL_RGT_DEFAUT])
Dim result As String
 
'Je contrôle que le champ EMPL_RGT_DEFAUT ne soit jamais vide
If IsNull(prmEMPL_RGT_DEFAUT) Then            'Si EMPL_RGT_DEFAUT est Null
        result = ALERTE_ERREUR2               'je mets " # A renseigner #"
    Else                                      'sinon
        result = CStr(prmEMPL_RGT_DEFAUT)     'je mets la valeur du champ
End If
 
TesterEMPL_RGT_DEFAUT = result
 
End Function
Public Function TesterAXE_C(prmAXE_C, prmCODE_PROJET, prmCODE_SOURCE As Variant) As String
'AXE_C0: TesterAxe_C([AXE_C];[CODE_PROJET];[CODE_SOURCE])
Dim result As String
If (prmCODE_SOURCE = 1 And IsNull(prmAXE_C) = False And IsNull(prmCODE_PROJET) = True) _
    Or (prmCODE_SOURCE And IsNull(prmAXE_C) = True And IsNull(prmCODE_PROJET) = False) _
        Or (prmCODE_SOURCE = 2 And IsNull(prmAXE_C) = True) Then
        result = CStr(Nz(prmAXE_C, ""))
    Else
        result = CStr(Nz(prmAXE_C, "")) & ALERTE_ERREUR
End If
 
TesterAXE_C = result
 
End Function
Public Function TesterAXE_L(prmAXE_L, prmCODE_PROJET, prmCODE_SOURCE As Variant) As String
'AXE_L0: TesterAxe_C([AXE_L];[CODE_PROJET];[CODE_SOURCE])
Dim result As String
If (prmCODE_SOURCE = 1 And IsNull(prmAXE_L) = False And IsNull(prmCODE_PROJET) = True) _
    Or (prmCODE_SOURCE And IsNull(prmAXE_L) = True And IsNull(prmCODE_PROJET) = False) _
        Or (prmCODE_SOURCE = 2 And IsNull(prmAXE_L) = True) Then
        result = CStr(Nz(prmAXE_L, ""))
    Else
        result = CStr(Nz(prmAXE_L, "")) & ALERTE_ERREUR
End If
 
TesterAXE_L = result
 
End Function
Public Function TesterBU_PC(prmAXE_C, prmBU_PC, prmCODE_SOURCE As Variant) As String
'BU_PC0: TesterCODE_PROJET([AXE_C];[BU_PC];[CODE_SOURCE])
Dim result As String
If (prmCODE_SOURCE = 1 And IsNull(prmAXE_C) = False And IsNull(prmBU_PC) = True) _
    Or (prmCODE_SOURCE And IsNull(prmAXE_C) = True And IsNull(prmBU_PC) = False) _
        Or (prmCODE_SOURCE = 2 And IsNull(prmBU_PC) = True) Then
        result = CStr(Nz(prmBU_PC, ""))
    Else
        result = CStr(Nz(prmBU_PC, "")) & ALERTE_ERREUR
End If
 
TesterBU_PC = result
 
End Function
Public Function TesterCODE_PROJET(prmAXE_C, prmCODE_PROJET, prmCODE_SOURCE As Variant) As String
'CODE_PROJET0: TesterCODE_PROJET([AXE_C];[CODE_PROJET];[CODE_SOURCE])
Dim result As String
If (prmCODE_SOURCE = 1 And IsNull(prmAXE_C) = False And IsNull(prmCODE_PROJET) = True) _
    Or (prmCODE_SOURCE And IsNull(prmAXE_C) = True And IsNull(prmCODE_PROJET) = False) _
        Or (prmCODE_SOURCE = 2 And IsNull(prmCODE_PROJET) = True) Then
        result = CStr(Nz(prmCODE_PROJET, ""))
    Else
        result = CStr(Nz(prmCODE_PROJET, "")) & ALERTE_ERREUR
End If
 
TesterCODE_PROJET = result
 
End Function
Public Function TesterCODE_ACTIVITE(prmAXE_C, prmCODE_ACTIVITE, prmCODE_SOURCE As Variant) As String
'CODE_ACTIVITE0: TesterCODE_PROJET([AXE_C];[CODE_ACTIVITE];[CODE_SOURCE])
Dim result As String
If (prmCODE_SOURCE = 1 And IsNull(prmAXE_C) = False And IsNull(prmCODE_ACTIVITE) = True) _
    Or (prmCODE_SOURCE And IsNull(prmAXE_C) = True And IsNull(prmCODE_ACTIVITE) = False) _
        Or (prmCODE_SOURCE = 2 And IsNull(prmCODE_ACTIVITE) = True) Then
        result = CStr(Nz(prmCODE_ACTIVITE, ""))
    Else
        result = CStr(Nz(prmCODE_ACTIVITE, "")) & ALERTE_ERREUR
End If
 
TesterCODE_ACTIVITE = result
 
End Function
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 05h20   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je n'ai pas tout regardé, mais tu fais appel à pas mal de fonctions ou routine, hors tout tes paramètres sont typés en Variant.

Je te conseille de plutôt mettre des types adéquats, string pour des chaines, et pour des chiffres les types en fonction : http://silkyroad.developpez.com/VBA/LesVariables/

Voilà déjà une première chose à faire.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 15h36   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,
Quelques remarques :
au lieu de

Code :
Left$(prmPOS_LOG, 3) Like "MAG"
et d'une manière générale :

au lieu de

Code :
Right$(prmPOS_LOG, 3) = "BDL"

Mais c'est sur que de coller du variant systèmatique c'est pas performant :
Note que : ne rien mettre c'est faire un typage Variant,
Que VBA n'est pas Java donc quand tu écris

Code :
prmGROUPE, prmCODE_SOURCE, prmARTICLE_PLANIF_DEMANDE, prmUTIL_SITE_DESTINATAIRE, prmTYPE_MODIF_ORDRE As Variant
Tout est variant. Non parceque tu met as Variant à la fin mais parceque ne type pas chaque variable.

En tout cas beaucoup de tests. Peut-être à simplifier ? Ce n'est que cette partie qui rame ?

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 16h54   #4
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Merci pour vos réponses, je vais ajuster ces quelques bricoles.

Par contre dans la masse de champs à contrôler en fait j'ai très souvent des chaînes de caractères donc si j'ai bien compris je mets "string".

Par contre lorsque mes valeurs peuvent aussi avoir des valeurs null (champ vide ou null) il vaut mettre quoi du coup "variant" ?

Ensuite j'ai des champs numériques je mets "long" et d'autres sont des dates (jj/mm/aaaa) je mets date c'est ça ?

Merci de vos précisions pour confirmer ou infirmer ma compréhension du sujet.
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 17h17   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Oui, c'est cela.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 14h51   #6
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Très bien merci

Je suis en cours de rectification du code. Ce qui m'amène d'autres questions.
Je peux déclarer toutes variable au début du coup ?
Code :
Dim prmFAMILLE As Variant
Mais est-ce que je peux aussi mettre comme ceci :
Code :
Dim prmFAMILLE, prmPOS_LOG, As Variant
Cette question vient de la remarque :
Citation:
Tout est variant. Non parceque tu met as Variant à la fin mais parceque ne type pas chaque variable.
Mais c'est peut-être à cause de la déclaration de variable dans ma fonction ?

Ah oui dernière question quand je ferme mon formulaire par un bouton spécial il recalcule toutes mes requêtes ! Est-ce qu'il y a un moyen pour pas qu'il le fasse et je gagnerais pas mal de temps du coup.
La cause de ce lancement de requêtes semble du à l'affichage des nombres d'erreurs, nombre totaux et du ratio des deux qui font appel à la requête principale.

Citation:
Envoyé par loufab Voir le message
En tout cas beaucoup de tests. Peut-être à simplifier ? Ce n'est que cette partie qui rame ?
Oui il n'y a que ça qui rame

Merci par avance
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 20h37   #7
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Code :
dim toto, tata, titi as string
toto tata sont variant, titi est string

tout est variant

Code :
dim toto as long, tata as variant, titi
toto est string et tata et titi sont variant

Si tu ne mets rien c'est variant.

Code :
Dim prmFAMILLE, prmPOS_LOG, As Variant
non tu ne peux pas faire ça. Inutile d'essayer d'inventer des syntaxes, autant les apprendre et les respecter.
En VBA soit tu types chaque variable soit elles sont Variant.

Pourquoi les requetes sont réinterogées à la sortie !?! ça ne sert à rien !
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/10/2011, 22h44   #8
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Merci loufab, je suis d'accord avec toi mais on m'avait dit au début de mes premiers écrits que cette syntaxe voulait dire tout variant ou tout string etc.

Comme j'avais compris tout autre chose avec vos explications (en fait la bonne chose) je voulais la confirmation.
J'ai écris ligne à ligne par précaution par rapport à ce que j'avais compris donc ouf

Ensuite oui cela ne sert à rien que les 14 requêtes qui alimentent mon formulaire se lance à la sortie de celui.
Mais en fait j'ai rien fait pour ça, j'ai récupéré cette base et depuis l'origine c'est comme ça mais je ne sais pas je n'arrive pas à stopper cette absurditée !!!!

En fait comme le montre l'imprim écran, j'ai des valeurs qui sont déduites des contôles fait pas mon code.
J'ai donc en requêtes pour un des 14 cas :
Calcul d'erreur
Liste des erreurs (pour afficher juste les lignes qui ont une erreur au minimum)
Nombre d'artilces de la famille en erreur qui est un compte sur la requête précédente (le premier chiffre en rouge)
Nombre d'artilce de la famille qui est un compte sur la requête Calcul d'erreur (chiffre en noir)
Et enfin un ration nombre d'article en erreur sur nombre d'artilce que je réalise dans une requête à partir des mes 2 comptes précédents.

Et c'est cette série de compte et de ration qui se recalcule en permanence à la fermeture alors que je ne veux pas.
Mais c'est peut être normale et juste un soucis de définition de champs ou de structure sachant que je souhaire avoir un indicateur immédiat quand même quand on est dans le formulaire.

En parcourant les FAQ, Forum etc j'ai vu l'utilisation du Case.
Est-ce que l'utilisation de Case au lieu de mes IF peuvent rendre le code plus rapide quand les conditions sont nombreuses et complexes ?
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 18h35   #9
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Citation:
Envoyé par jerome94 Voir le message
Merci loufab, je suis d'accord avec toi mais on m'avait dit au début de mes premiers écrits que cette syntaxe voulait dire tout variant ou tout string etc.
Où as-tu lu ceci que j'aille de ce pas y faire une mise au point.


Citation:
Ensuite oui cela ne sert à rien que les 14 requêtes qui alimentent mon formulaire se lance à la sortie de celui.
Mais en fait j'ai rien fait pour ça, j'ai récupéré cette base et depuis l'origine c'est comme ça mais je ne sais pas je n'arrive pas à stopper cette absurditée !!!!
Mets des points d'arrêts dans chaque événements ou consulte le tuto sur le sujet pour savoir lesquels sont déclenché en sortie.


Citation:
En parcourant les FAQ, Forum etc j'ai vu l'utilisation du Case.
Est-ce que l'utilisation de Case au lieu de mes IF peuvent rendre le code plus rapide quand les conditions sont nombreuses et complexes ?
Je ne sais pas si le case est vraiment adapté à ton cas. Tu peux commencer à regarder comment ne tester qu'une fois une même valeur. Si c'est réalisable.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 16h13   #10
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Citation:
Envoyé par loufab Voir le message
Où as-tu lu ceci que j'aille de ce pas y faire une mise au point.
Je ne l'ai pas lu c'est un collègue de boulot mais je vais me le faire celui là



Citation:
Envoyé par loufab Voir le message
Mets des points d'arrêts dans chaque événements ou consulte le tuto sur le sujet pour savoir lesquels sont déclenché en sortie.
Alors j'en ai mis de partout ou presque les uns après les autres et tout se lance en faite !!!!
Et maintenant je cherche le tuto que tu m'indiques pour voir si j'ai encore des trucs à voir.

Mon bouton "quitter" de mon formulaire est codé comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Commande11_Click()
On Error GoTo Err_Commande11_Click
 
    DoCmd.Close
 
Exit_Commande11_Click:
    Exit Sub
 
Err_Commande11_Click:
    MsgBox Err.Description
    Resume Exit_Commande11_Click
 
End Sub
Dois ajouter autre chose pour lui dire stop !!!

Dans mon formulaire tout mes chiffres sont en faite autant de requête sur ma table articles ou sur mes requêtes de contrôle.

Comment je pourrais mettre mes 42 valeurs numériques (résultats de requêtes) dans une même table sur le même enregistrement.
Comme ceci je fais le calcul au début et ensuite je ne viens chercher que la table et donc beaucoup moins long normalement.
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 09h02   #11
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Ton collègue devrait continuer à s'occuper de Java.
Le tuto sur les événements :
http://loufab.developpez.com/tutorie...ss/evenements/

Tout à fait ! Lorsque le nombre de requete devient un problème on peut passer par une table temporaire.

Transforme chaque requete en update sur cette table temporaire. Tu peux le faire avec le générateur en chargeant la requete selection et en cliquant sur le type requete Mise à jour.

Le code de fermeture ne comporte pas d'instruction de type requery. Il va falloir creuser un peu plus en suivant pas à pas le code à la fermeture... Donc point d'arrêts et F8...

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 13h58   #12
Invité régulier
 
Homme
Inscription : septembre 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 44
Points : 9
Points : 9
Citation:
Envoyé par loufab Voir le message
Ton collègue devrait continuer à s'occuper de Java.
Oui c'est bien vrai pour le coup

Citation:
Envoyé par loufab Voir le message
Tout à fait ! Lorsque le nombre de requete devient un problème on peut passer par une table temporaire.

Transforme chaque requete en update sur cette table temporaire. Tu peux le faire avec le générateur en chargeant la requete selection et en cliquant sur le type requete Mise à jour.
Je vais faire cette opération je l'avais déjà faite pour réduire le périmètre de contrôle et découper ma base article qui pouvait atteindre 30000 lignes et ça amélioré la perfo du coup.

Citation:
Envoyé par loufab Voir le message
Le code de fermeture ne comporte pas d'instruction de type requery. Il va falloir creuser un peu plus en suivant pas à pas le code à la fermeture... Donc point d'arrêts et F8...
Je n'arrête pas de faire F8 d'ailleurs la touche est effacée mais je cherche et je vais trouver.
Je te tiens au courant des évolutions
jerome94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h09.


 
 
 
 
Partenaires

Hébergement Web