IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fermeture fichier excel par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut Fermeture fichier excel par macro
    Bonjour à tous !!

    J'ai réalisé un outil permettant d'enregistrer des informations au travers d'une interface nommée "SIDEC".
    Cette interface mémorise les informations dans des variables temporaires puis les colle dans un fichier base de données (fichier Excel qui doit être accessible par plusieurs utilisateurs)

    Je vous laisse gracieusement l'outil afin de pouvoir m'aider à résoudre mes problèmes :
    exemple pour forum info.7z

    Le problème :
    Lorsque je lance une macro telle que "Enregistrer" ou "Cherche" le fichier base de données est ouvert depuis le fichier d'interface, les données sont collées ou copiées (suivant la macro), puis le fichier d'interface ferme le fichier base de données.
    Le problème c'est que Excel garde une fenêtre Excel vide ouverte après avoir fermé le fichier base de données.
    Comment éviter de garder une page Excel ouverte en fond de macro ? (le Application.visible=false n'a pas l'air de fonctionner correctement)

    Mes macros fonctionnaient toutes très bien sur Excel 2007 mais le changement sous 2016 pose quelques soucis...

    Je ne suis pas certain de m'être exprimé correctement, n'hésitez donc pas à me demander plus de précisions.

    Merci de votre support !
    Pastis
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Désolé, mais je n'ouvre pas les fichiers joints avec macros...

    Comment ouvres-tu tes fichiers ?
    Est-ce que tu utilises un objet Excel.Application ou tu ouvres directement avec Workbooks.Open MonFicher ?
    MPi²

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je n'(ouvre non plus jamais de classeur tiers.
    Je vais donc me contenter d'extrapoler/deviner à partir de tes seules explications (trop réduites).
    Il semblerait que tu aies ouvert indûment une autre instance de Excel.
    Tu devrais dans un tel cas t'intéresser (ton aide VBA) à ce que sont (et leurs conséquences) les fonctions GetObject et CreateObject.
    (je ne vois d'ailleurs pas pourquoi l'une ou l'autre de ces fonctions serait nécessaire puisque, par construction, tu es DEJA dans une appli Excel ...)
    Mais bon ... j'ignore en fait le code que tu as pu écrire (puisque non montré ici ....
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, utiliser un kill ( brutal mais efficace ) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
     
    Sub Kill_Excel()
    Dim sKillExcel As String
        sKillExcel = "TASKKILL /F /IM Excel.exe"
        Shell sKillExcel, vbHide
    End Sub

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    re
    LE MOT DE PASSE DU FICHIER!!?????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Saluts,
    Je me demande pourquoi ne pas poster simplement le code d'ouverture du fichier + le code fermeture ?
    Afin de nous épargner cette corvée d'aller examiner un fichier de provenance non sûre.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  7. #7
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Bonjour à tous !

    Merci pour vos réponses !
    Effectivement, gros manque d'infos de ma part...je savais juste pas du tout par où commencer.

    Patrick, le mot de passe : EMTQSSE

    parmi, j'utilise Workbooks.Open

    Petite précision sur la problématique :
    C'est bien une instance Excel qui reste ouverte en plus de la fenêtre du fichier. A chaque fois que je vais utiliser la macro qui ouvre puis ferme le fichier base de données cela créé une nouvelle fenêtre. Je me retrouve avec bcp de fenêtres ouvertes
    Toutes les macros fonctionnaient sous Excel 2007, d'où ma totale incompréhension en passant sous XL-2016... Etant donné que c'est pour le boulot, je ne peux pas rester en XL-2007.

    Pour ceux qui ne souhaitent pas ouvrir le fichier macro, voici le code :
    (Bonne chance )
    J'ai un peu "bourriné" sur le codage parce que pas expert pour simplifier les codes macros..
    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
    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
    915
    916
    917
    918
    919
    920
    921
    922
    923
    924
    925
    926
    927
    928
    929
    930
    931
    932
    933
    934
    935
    936
    937
    938
    939
    940
    941
    942
    943
    944
    945
    946
    947
    948
    949
    950
    951
    952
    953
    954
    955
    956
    957
    958
    959
    960
    961
    962
    963
    964
    965
    966
    967
    968
    969
    970
    971
    972
    973
    974
    975
    976
    977
    978
    979
    980
    981
    982
    983
    984
    985
    986
    987
    988
    989
    990
    991
    992
    993
    994
    995
    996
    997
    998
    999
    1000
    1001
    1002
    1003
    1004
    1005
    1006
    1007
    1008
    1009
    1010
    1011
    1012
    1013
    1014
    1015
    1016
    1017
    1018
    1019
    1020
    1021
    1022
    1023
    1024
    1025
    1026
    1027
    1028
    1029
    1030
    1031
    1032
    1033
    1034
    1035
    1036
    1037
    1038
    1039
    1040
    1041
    1042
    1043
    1044
    1045
    1046
    1047
    1048
    1049
    1050
    1051
    1052
    1053
    1054
    1055
    1056
    1057
    1058
    1059
    1060
    1061
    1062
    1063
    1064
    1065
    1066
    1067
    1068
    1069
    1070
    1071
    1072
    1073
    1074
    1075
    1076
    1077
    1078
    1079
    1080
    1081
    1082
    1083
    1084
    1085
    1086
    1087
    1088
    1089
    1090
    1091
    1092
    1093
    1094
    1095
    1096
    1097
    1098
    1099
    1100
    1101
    1102
    1103
    1104
    1105
    1106
    1107
    1108
    1109
    1110
    1111
    1112
    1113
    1114
    1115
    1116
    1117
    1118
    1119
    1120
    1121
    1122
    1123
    1124
    1125
    1126
    1127
    1128
    1129
    1130
    1131
    1132
    1133
    1134
    1135
    1136
    1137
    1138
    1139
    1140
    1141
    1142
    1143
    1144
    1145
    1146
    1147
    1148
    1149
    1150
    1151
    1152
    1153
    1154
    1155
    1156
    1157
    1158
    1159
    1160
    1161
    1162
    1163
    1164
    1165
    1166
    1167
    1168
    1169
    1170
    1171
    1172
    1173
    1174
    1175
    1176
    1177
    1178
    1179
    1180
    1181
    1182
    1183
    1184
    1185
    1186
    1187
    1188
    1189
    1190
    1191
    1192
    1193
    1194
    1195
    1196
    1197
    1198
    1199
    1200
    1201
    1202
    1203
    1204
    1205
    1206
    1207
    1208
    1209
    1210
    1211
    1212
    1213
    1214
    1215
    1216
    1217
    1218
    1219
    1220
    1221
    1222
    1223
    1224
    1225
    1226
    1227
    1228
    1229
    1230
    1231
    1232
    1233
    1234
    1235
    1236
    1237
    1238
    1239
    1240
    1241
    1242
    1243
    1244
    1245
    1246
    1247
    1248
    1249
    1250
    1251
    1252
    1253
    1254
    1255
    1256
    1257
    1258
    1259
    1260
    1261
    1262
    1263
    1264
    1265
    1266
    1267
    1268
    1269
    1270
    1271
    1272
    1273
    1274
    1275
    1276
    1277
    1278
    1279
    1280
    1281
    1282
    1283
    Option Explicit
     
    '============================================================
    'variables
    '============================================================
     
    Dim saving As Integer
    Dim LigneMCSet As String
    Dim valindex As String
    Dim val_ligne As String
    Dim val_controleur As String
    Dim val_affaire As String
    Dim val_cellule As String
    Dim val_schema As String
    Dim val_detection As String
    Dim val_origine As String
    Dim val_type1 As String
    Dim val_type2 As String
    Dim val_description As String
    Dim val_impact As String
    Dim val_heures As String
    Dim val_min As String
    Dim val_operateur As String
    Dim val_reprise As String
     
    Dim finbdd As Integer
    Dim lignefinbdd As Integer
    Dim i As Integer
    Dim j As Integer
    Dim b As Integer
    Dim a As Integer
    Dim cell As Range
    Dim ListItems As String
    Dim Laligne As Integer
    Dim LstItem As ListItem
    Dim lindex As String
    Dim lignebdd As Integer
    Dim chemin As String
     
    Dim startdate As Single
    Dim enddate As Single
     
    Dim strFormat As String
    Dim X As Integer
     
    Dim sh As Worksheet
     
    Sub Deprotection()
     
    For Each sh In Sheets
        sh.Unprotect "EMTQSSE"
    Next sh
     
    End Sub
     
    Sub Protection()
     
    For Each sh In Sheets
        sh.Protect "EMTQSSE"
    Next sh
     
    End Sub
    Private Sub Cherche_Click()
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Visible = True
    test:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
        If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly = True Then  'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
            Application.Wait (Now + TimeValue("0:00:02"))
            GoTo test
        Else
            '----------On créé une fermeture automatique de la base de données en cas d'erreur dans la macro----------
            On Error GoTo Fin
     
            Deprotection
     
            Application.DisplayAlerts = True
            Sheets("bdd").Range("A1:O1").AutoFilter
            Sheets("bdd").Range("A1:O1").AutoFilter
            'On identifie la ligne à remplir
            If Sheets("bdd").Range("A2") = "" Then
                finbdd = 2
                MsgBox "Il n'y aucune donnée à analyser."
                Exit Sub
            Else
                finbdd = Sheets("bdd").Range("A1").End(xlDown).Row + 1
            End If
     
            'On établi le filtre
            Sheets("bdd").Range("A1:P1").Select
            Selection.AutoFilter
     
            'On converti les données dates en nombre pour qu'Excel comprenne le critère que nous lui imposons
            If Date1.Value <> "" Then
                startdate = CDate(Date1.Value)
            End If
            If Date2.Value <> "" Then
                enddate = CDate(Date2.Value)
            End If
     
            'On établi les critères de recherche
            If Controleur.Value <> "" Then
            ActiveSheet.Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=4, Criteria1:=Controleur, Operator:=xlAnd
            End If
            If Date1.Value <> "" And Date2.Value <> "" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=2, Criteria1:=">=" & startdate, Operator:=xlAnd, Criteria2:="<=" & enddate
            End If
            If Ligne2.Value <> "" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=3, Criteria1:="=" & Ligne2.Value
            End If
            If Noaffaire.Value <> "" And Noaffaire.Value <> "FR-" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=5, Criteria1:="=*" & Noaffaire.Value & "*"
            End If
            If NoCel.Value <> "" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=6, Criteria1:="=" & NoCel.Value
            End If
            If Noschema.Value <> "" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=7, Criteria1:="=" & Noschema.Value
            End If
            If Motcle.Value <> "" Then
                Sheets("bdd").Range("$A$1:$P$" & finbdd - 1).AutoFilter Field:=12, Criteria1:="=*" & Motcle.Value & "*"
            End If
            lignefinbdd = Range("A65000").End(xlUp).Row
     
            If Sheets("bdd").Range("A1").SpecialCells(xlCellTypeLastCell).Row = 1 Then
                MsgBox "Il n'y a aucune donnée à afficher"
            Else
                With Trouver
                    .Sorted = False
                    With .ColumnHeaders
                        .Clear
                        .Add , , "Index", 30
                        .Add , , "Date", 55
                        .Add , , "Ligne", 35
                        .Add , , "Controleur", 35
                        .Add , , "N°Affaire", 60
                        .Add , , "N°Cellule", 45
                        .Add , , "N°Schéma", 60
                        .Add , , "Etape Contrôle", 65
                        .Add , , "Etape d'origine", 80
                        .Add , , "Type 1", 70
                        .Add , , "Type 2", 130
                        .Add , , "Description du défaut", 220
                        .Add , , "Impact", 50
                        .Add , , "TR heures", 50
                        .Add , , "TR minutes", 50
                        .Add , , "Opérateur", 45
                        .Add , , "Reprise", 500
                    End With
                    .Gridlines = True
                    .FullRowSelect = True
                    .HideColumnHeaders = False
                    .LabelEdit = 1
                End With
                Trouver.ListItems.Clear
                'On rempli la listeview appelée "Trouver"
                For Each cell In Sheets("bdd").Range("A2", [A65000].End(xlUp)).SpecialCells(xlCellTypeVisible)
                    Trouver.ListItems.Add.Text = cell.Value
                Next cell
                i = 1
                a = 0
                For Each cell In Sheets("bdd").Range("B2:Q" & lignefinbdd).SpecialCells(xlCellTypeVisible)
                    If a >= 16 Then
                        i = i + 1
                        a = 0
                    End If
                    Trouver.ListItems(i).ListSubItems.Add.Text = cell.Value
                    a = a + 1
                Next cell
                Trouver.ListItems(1).Selected = False
                Set Trouver.SelectedItem = Nothing
            End If
     
            Sheets("bdd").Range("A1:P1").Select
            Selection.AutoFilter
            Selection.AutoFilter
    Fin:
            Protection
     
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
     
    Application.Visible = False
    Application.ScreenUpdating = True
        End If
     
    End Sub
    Private Sub PM_Click()
     
    If Ajout.Reprise.Visible = True Then
        If Ajout.Controleur.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Contrôleur' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.Ligne.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Ligne' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.LieuDetection.ListIndex = -1 Then
            MsgBox "Vous devez renseigner la zone 'Lieu de détection lors du contrôle' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.Numaffaire.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Numéro d'affaire' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.NumCel.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Numéro de cellule dans le tableau' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.Numschema.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Numéro de schéma' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
        If Ajout.Reprise.Value = "" Then
            MsgBox "Vous devez renseigner la zone 'Reprise' pour enregistrer un 'Pour mémoire'.", vbOKOnly & vbExclamation, "Erreur de formulaire"
            Exit Sub
        End If
     
        'On enregistre les valeurs du Pour mémoire dans des variables
        val_ligne = Ajout.Ligne.Value
        val_controleur = Ajout.Controleur.Value
        val_affaire = Ajout.Numaffaire.Value
        val_cellule = Ajout.NumCel.Value
        val_schema = Ajout.Numschema.Value
        val_detection = Ajout.LieuDetection.List(LieuDetection.ListIndex)
        val_reprise = Ajout.Reprise.Value
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Visible = True
    test:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
        If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly Then   'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
            Application.Wait (Now + TimeValue("0:00:02"))
            GoTo test
        Else
            '----------On créé une fermeture automatique de la base de données en cas d'erreur dans la macro----------
            On Error GoTo Fin
     
            Deprotection
     
    Application.DisplayAlerts = True
            Sheets("bdd").Range("A1:O1").AutoFilter
            Sheets("bdd").Range("A1:O1").AutoFilter
            'On identifie la ligne à remplir
            If Sheets("bdd").Range("A2") = "" Then
                finbdd = 2
            Else
                finbdd = Sheets("bdd").Range("A1").End(xlDown).Row + 1
            End If
     
            'On identifie l'index (colonne A)
            If Sheets("bdd").Range("A2") = "" Then
                Sheets("bdd").Range("A2") = 1
            Else
                Sheets("bdd").Range("A" & finbdd) = Sheets("bdd").Range("A" & finbdd - 1).Value + 1
            End If
     
            Sheets("bdd").Range("B" & finbdd) = Date
            Sheets("bdd").Range("C" & finbdd) = val_ligne
            Sheets("bdd").Range("D" & finbdd) = val_controleur
            Sheets("bdd").Range("E" & finbdd) = val_affaire
            Sheets("bdd").Range("F" & finbdd) = val_cellule
            Sheets("bdd").Range("G" & finbdd) = val_schema
            Sheets("bdd").Range("H" & finbdd) = val_detection
            Sheets("bdd").Range("Q" & finbdd) = val_reprise
    Fin:
            Protection
     
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
    Application.Visible = False
    Application.ScreenUpdating = True
            Ajout.Reprise.Value = ""
     
            MsgBox "Votre 'Pour mémoire' a été enregistré correctement.", vbOKOnly & vbInformation, "C'est enregistré"
     
            Ajout.Attention1.Visible = True
            Ajout.Attention2.Visible = True
            Ajout.Attention3.Visible = True
        End If
    Else
        MsgBox "Vous n'avez pas l'autorisation de créer un PM"
        Exit Sub
    End If
     
    End Sub
    Private Sub Enregistrer_Click()
     
        'On enregistre les valeurs de l'enregistrement dans des variables
        If Ajout.Operateur.Visible = True Then
            If Ajout.Ligne.Value <> "" And Ajout.Controleur.Value <> "" And Ajout.Numaffaire.Value <> "" And Ajout.NumCel.Value <> "" And _
                    Ajout.LieuDetection.ListIndex <> -1 And Ajout.SecteurOrigine.ListIndex <> -1 And Ajout.TypeDefaut.ListIndex <> -1 And _
                    Ajout.Details.ListIndex <> -1 And Ajout.Description.Value <> "" And Ajout.Impact.ListIndex <> -1 And _
                    Ajout.TRheures.ListIndex <> -1 And Ajout.TRminutes.ListIndex <> -1 Then
                val_ligne = Ajout.Ligne.Value
                val_controleur = Ajout.Controleur.Value
                val_affaire = Ajout.Numaffaire.Value
                val_cellule = Ajout.NumCel.Value
                val_schema = Ajout.Numschema.Value
                val_detection = Ajout.LieuDetection.List(LieuDetection.ListIndex)
                val_origine = Ajout.SecteurOrigine.List(SecteurOrigine.ListIndex)
                val_type1 = Ajout.TypeDefaut.List(TypeDefaut.ListIndex)
                val_type2 = Ajout.Details.List(Details.ListIndex)
                val_description = Ajout.Description.Value
                val_impact = Ajout.Impact.List(Impact.ListIndex)
                val_heures = Ajout.TRheures.List(TRheures.ListIndex)
                val_min = Ajout.TRminutes.List(TRminutes.ListIndex)
                val_operateur = Ajout.Operateur.Value
            Else
                MsgBox "Vous devez remplir l'ensemble des données pour enregistrer un aléa.", vbOKOnly & vbExclamation, "Erreur de sélection"
                Exit Sub
            End If
        End If
        If Ajout.Reprise.Visible = True Then
            If Ajout.Ligne.Value <> "" And Ajout.Controleur.Value <> "" And Ajout.Numaffaire.Value <> "" And Ajout.NumCel.Value <> "" And _
                    Ajout.LieuDetection.ListIndex <> -1 And Ajout.SecteurOrigine.ListIndex <> -1 And _
                    Ajout.TypeDefaut.ListIndex <> -1 And Ajout.Details.ListIndex <> -1 And Ajout.Description.Value <> "" And _
                    Ajout.Impact.ListIndex <> -1 And Ajout.TRheures.ListIndex <> -1 And Ajout.TRminutes.ListIndex <> -1 Then
                val_ligne = Ajout.Ligne.Value
                val_controleur = Ajout.Controleur.Value
                val_affaire = Ajout.Numaffaire.Value
                val_cellule = Ajout.NumCel.Value
                val_schema = Ajout.Numschema.Value
                val_detection = Ajout.LieuDetection.List(LieuDetection.ListIndex)
                val_origine = Ajout.SecteurOrigine.List(SecteurOrigine.ListIndex)
                val_type1 = Ajout.TypeDefaut.List(TypeDefaut.ListIndex)
                val_type2 = Ajout.Details.List(Details.ListIndex)
                val_description = Ajout.Description.Value
                val_impact = Ajout.Impact.List(Impact.ListIndex)
                val_heures = Ajout.TRheures.List(TRheures.ListIndex)
                val_min = Ajout.TRminutes.List(TRminutes.ListIndex)
                val_reprise = Ajout.Reprise.Value
            Else
                MsgBox "Vous devez remplir l'ensemble des données pour enregistrer un aléa.", vbOKOnly & vbExclamation, "Erreur de sélection"
                Exit Sub
            End If
        End If
        If Ajout.Reprise.Visible = False And Ajout.Operateur.Visible = False Then
            If Ajout.Ligne.Value <> "" And Ajout.Controleur.Value <> "" And Ajout.Numaffaire.Value <> "" And Ajout.NumCel.Value <> "" And _
                    Ajout.LieuDetection.ListIndex <> -1 And Ajout.SecteurOrigine.ListIndex <> -1 And Ajout.TypeDefaut.ListIndex <> -1 And _
                    Ajout.Details.ListIndex <> -1 And Ajout.Description.Value <> "" And Ajout.Impact.ListIndex <> -1 And _
                    Ajout.TRheures.ListIndex <> -1 And Ajout.TRminutes.ListIndex <> -1 Then
                val_ligne = Ajout.Ligne.Value
                val_controleur = Ajout.Controleur.Value
                val_affaire = Ajout.Numaffaire.Value
                val_cellule = Ajout.NumCel.Value
                val_schema = Ajout.Numschema.Value
                val_detection = Ajout.LieuDetection.List(LieuDetection.ListIndex)
                val_origine = Ajout.SecteurOrigine.List(SecteurOrigine.ListIndex)
                val_type1 = Ajout.TypeDefaut.List(TypeDefaut.ListIndex)
                val_type2 = Ajout.Details.List(Details.ListIndex)
                val_description = Ajout.Description.Value
                val_impact = Ajout.Impact.List(Impact.ListIndex)
                val_heures = Ajout.TRheures.List(TRheures.ListIndex)
                val_min = Ajout.TRminutes.List(TRminutes.ListIndex)
            Else
                MsgBox "Vous devez remplir l'ensemble des données pour enregistrer un aléa.", vbOKOnly & vbExclamation, "Erreur de sélection"
                Exit Sub
            End If
        End If
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Visible = True
    test:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
        If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly Then   'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
            Application.Wait (Now + TimeValue("0:00:02"))
            GoTo test
        Else
            '----------On créé une fermeture automatique de la base de données en cas d'erreur dans la macro----------
            On Error GoTo Fin
     
            Deprotection
     
            Application.DisplayAlerts = True
            Sheets("bdd").Range("A1:O1").AutoFilter
            Sheets("bdd").Range("A1:O1").AutoFilter
            'On identifie la ligne à remplir
            If Sheets("bdd").Range("A2") = "" Then
                finbdd = 2
            Else
                finbdd = Sheets("bdd").Range("A1").End(xlDown).Row + 1
            End If
     
            'On identifie l'index (colonne A)
            If Sheets("bdd").Range("A2") = "" Then
                Sheets("bdd").Range("A2") = 1
            Else
                Sheets("bdd").Range("A" & finbdd) = Sheets("bdd").Range("A" & finbdd - 1).Value + 1
            End If
     
            Sheets("bdd").Range("B" & finbdd) = Date
            Sheets("bdd").Range("C" & finbdd) = val_ligne
            Sheets("bdd").Range("D" & finbdd) = val_controleur
            Sheets("bdd").Range("E" & finbdd) = val_affaire
            Sheets("bdd").Range("F" & finbdd) = val_cellule
            Sheets("bdd").Range("G" & finbdd) = val_schema
            Sheets("bdd").Range("H" & finbdd) = val_detection
            Sheets("bdd").Range("I" & finbdd) = val_origine
            Sheets("bdd").Range("J" & finbdd) = val_type1
            Sheets("bdd").Range("K" & finbdd) = val_type2
            Sheets("bdd").Range("L" & finbdd) = val_description
            Sheets("bdd").Range("M" & finbdd) = val_impact
            Sheets("bdd").Range("N" & finbdd) = val_heures
            Sheets("bdd").Range("O" & finbdd) = val_min
            If Ajout.Operateur.Visible = True Then
                Sheets("bdd").Range("P" & finbdd) = val_operateur
            End If
            If Ajout.Reprise.Visible = True Then
                Sheets("bdd").Range("Q" & finbdd) = val_reprise
            End If
    Fin:
            Protection
     
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
        Application.Visible = False
        Application.ScreenUpdating = True
     
            Ajout.SecteurOrigine = Null
            Ajout.TypeDefaut.RowSource = ""
            Ajout.Details.RowSource = ""
            Ajout.Description.Value = ""
            Ajout.Impact = Null
            Ajout.TRheures = Null
            Ajout.TRminutes = Null
            If Ajout.Operateur.Visible = True Then
                Ajout.Operateur.Value = ""
            End If
            If Ajout.Reprise.Visible = True Then
                Ajout.Reprise.Value = ""
            End If
     
            MsgBox "Votre aléa a été enregistré correctement.", vbOKOnly & vbInformation, "C'est enregistré"
     
            Ajout.Attention1.Visible = True
            Ajout.Attention2.Visible = True
            Ajout.Attention3.Visible = True
        End If
     
    End Sub
    Private Sub Controleur_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        Ajout.Controleur2.Value = Ajout.Controleur.Value
     
    End Sub
    Private Sub Date1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
    donnee = 1
    Cancel = True: GetCursorPos PtCur: UsfCalendrier.Show
     
    End Sub
    Private Sub Date1_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub Date2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
    donnee = 2
    Cancel = True: GetCursorPos PtCur: UsfCalendrier.Show
     
    End Sub
    Private Sub Date2_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
     
    Private Sub Imprimer_Click()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim C As Range
    Dim imprimante As String
    Dim annuler As String
     
    If Ajout.lignefix.Value = "NS500" And Ajout.zonefix.Value <> "Mise en tableau" Then 'Dans le cas d'une impression pour le NS500 ce sera la fiche d'aléa qui sera imprimée
        Sheets("Aléas").Range("B9:F70").ClearContents
        Sheets("Aléas").Range("G2:G3").ClearContents
        Sheets("Aléas").Range("D5:D7").ClearContents
     
        Sheets("Aléas").Range("G2").Value = Ajout.LieuDetection.Text
        Sheets("Aléas").Range("G3").Value = Ajout.Ligne.Text
        Sheets("Aléas").Range("D5").Value = Ajout.Affaire.Value
        Sheets("Aléas").Range("D6").Value = Ajout.Cellule.Value
        Sheets("Aléas").Range("D7").Value = Ajout.Schema.Value
        Sheets("Aléas").Range("B4").Value = Date
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Visible = True
    test:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
            If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly Then   'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
                Application.Wait (Now + TimeValue("0:00:02"))
                GoTo test
            Else
                On Error GoTo Fin                                               'On créé une fermeture automatique de la base de données en cas d'erreur dans la macro
     
                Deprotection
     
                Application.DisplayAlerts = True
                Sheets("bdd").Range("A1:O1").AutoFilter
                Sheets("bdd").Range("A1:O1").AutoFilter
                'On identifie la ligne à remplir
                If Sheets("bdd").Range("A2") = "" Then
                    finbdd = 2
                    MsgBox "Il n'y aucune donnée à imprimer."
                    Exit Sub
                Else
                    finbdd = Sheets("bdd").Range("A1").End(xlDown).Row
                End If
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("$A$1:$N$" & finbdd).AutoFilter Field:=5, Criteria1:="=" & Ajout.Affaire.Value, Operator:=xlAnd
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("$A$1:$N$" & finbdd).AutoFilter Field:=6, Criteria1:="=" & Ajout.Cellule.Value, Operator:=xlAnd
     
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("A2:A" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("B" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("B" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("L2:L" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("C" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("C" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("M2:M" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("D" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("D" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("D2:D" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("E" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("E" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
    Fin:
                Protection
     
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
                If j > 33 Then
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("B39").Value = "Index"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("C39").Value = "Description de l'aléa"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("D39").Value = "Impact"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("E39").Value = "Contrôleur"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Range("F39").Value = "Reprise défaut"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 4").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 5").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 6").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 6").TextFrame.Characters.Text = "page 1/2"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 9").TextFrame.Characters.Text = "page 2/2"
                Else
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 4").Visible = False
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 5").Visible = False
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 6").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 6").TextFrame.Characters.Text = "page 1/1"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").Shapes("ZoneTexte 9").Visible = False
                End If
            End If
            annuler = Application.Dialogs(xlDialogPrinterSetup).Show
            If annuler = False Then Exit Sub
            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Aléas").PrintOut
        Application.ScreenUpdating = True
        Application.Visible = False
    End If
    '----------------------------
    If Ajout.zonefix.Value = "IQBox" Or Ajout.zonefix.Value = "Mise en tableau" Then 'Dans le cas d'une impression pour les IQBox ou Mise en Tableau ce sera la fiche de reprise qui sera imprimée
            Sheets("Reprise").Range("B9:E70").ClearContents
            Sheets("Reprise").Range("F2:F3").ClearContents
            Sheets("Reprise").Range("D5:D7").ClearContents
     
            Sheets("Reprise").Range("F2").Value = Ajout.LieuDetection.Text
            Sheets("Reprise").Range("F3").Value = Ajout.Ligne.Text
            Sheets("Reprise").Range("D5").Value = Ajout.Affaire.Value
            Sheets("Reprise").Range("D6").Value = Ajout.Cellule.Value
            Sheets("Reprise").Range("D7").Value = Ajout.Schema.Value
            Sheets("Reprise").Range("B4").Value = Date
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Visible = True
    test2:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
            If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly Then   'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
                Application.Wait (Now + TimeValue("0:00:02"))
                GoTo test2
            Else
                On Error GoTo Fin2                                               'On créé une fermeture automatique de la base de données en cas d'erreur dans la macro
     
                Deprotection
     
                Application.DisplayAlerts = True
                Sheets("bdd").Range("A1:O1").AutoFilter
                Sheets("bdd").Range("A1:O1").AutoFilter
                'On identifie la ligne à remplir
                If Sheets("bdd").Range("A2") = "" Then
                    finbdd = 2
                    MsgBox "Il n'y aucune donnée à imprimer."
                    Exit Sub
                Else
                    finbdd = Sheets("bdd").Range("A1").End(xlDown).Row
                End If
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("$A$1:$N$" & finbdd).AutoFilter Field:=5, Criteria1:="=" & Ajout.Affaire.Value, Operator:=xlAnd
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("$A$1:$N$" & finbdd).AutoFilter Field:=6, Criteria1:="=" & Ajout.Cellule.Value, Operator:=xlAnd
     
                j = 9 'n° ligne dans fiche de reprise
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("A2:A" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("B" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("B" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("Q2:Q" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("C" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("C" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
                j = 9 'n° ligne dans fiche d'aléa
                For Each C In Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Sheets("bdd").Range("D2:D" & finbdd).SpecialCells(xlCellTypeVisible)
                    If j <= 33 Then
                        Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("D" & j).Value = C.Value
                        j = j + 1
                    Else
                        If j < 70 Then
                            If j = 34 Then j = 40
                            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("D" & j).Value = C.Value
                            j = j + 1
                        End If
                    End If
                Next C
    Fin2:
                Protection
     
                Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
                If j > 33 Then
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("B39").Value = "Index"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("C39").Value = "Description de la reprise à effectuer"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("D39").Value = "Contrôleur"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Range("E39").Value = "Reprise défaut"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 4").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 5").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 6").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 6").TextFrame.Characters.Text = "page 1/2"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 7").TextFrame.Characters.Text = "page 2/2"
                Else
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 4").Visible = False
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 5").Visible = False
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 6").Visible = True
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 6").TextFrame.Characters.Text = "page 1/1"
                    Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").Shapes("ZoneTexte 7").Visible = False
                End If
            End If
            annuler = Application.Dialogs(xlDialogPrinterSetup).Show
            If annuler = False Then Exit Sub
            Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Reprise").PrintOut
        Application.ScreenUpdating = True
        Application.Visible = False
    End If
    End Sub
    Private Sub LieuDetection_Change()
     
    '--------MCSet/PIX--------
    If (Ajout.Ligne.Value = "MCSet" Or Ajout.Ligne.Value = "PIX") And Ajout.LieuDetection.ListIndex = 0 Then
        Ajout.SecteurOrigine.RowSource = "OrigineMCSetIQBox"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
    If (Ajout.Ligne.Value = "MCSet" Or Ajout.Ligne.Value = "PIX") And Ajout.LieuDetection.ListIndex = 1 Then
        If Ajout.Ligne.Value = "MCSet" Then Ajout.SecteurOrigine.RowSource = "OrigineMCSetMeca"
        If Ajout.Ligne.Value = "PIX" Then Ajout.SecteurOrigine.RowSource = "OriginePIX"
        Ajout.Label62.Visible = False
        Ajout.Reprise.Visible = False
        Ajout.Label63.Visible = False
        Ajout.Label71.Visible = False
    End If
    If (Ajout.Ligne.Value = "MCSet" Or Ajout.Ligne.Value = "PIX") And Ajout.LieuDetection.ListIndex = 2 Then
        If Ajout.Ligne.Value = "MCSet" Then Ajout.SecteurOrigine.RowSource = "OrigineMCSetMET"
        If Ajout.Ligne.Value = "PIX" Then Ajout.SecteurOrigine.RowSource = "OriginePIX"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
     
    '--------NS500--------
    If Ajout.Ligne.Value = "NS500" And Ajout.LieuDetection.ListIndex = 0 Then
        Ajout.SecteurOrigine.RowSource = "OrigineNS500CBT"
        Ajout.Label64.Visible = True
        Ajout.Operateur.Visible = True
        Ajout.Label62.Visible = False
        Ajout.Reprise.Visible = False
        Ajout.Label63.Visible = False
        Ajout.Label71.Visible = False
    End If
    If Ajout.Ligne.Value = "NS500" And Ajout.LieuDetection.ListIndex = 1 Then
        Ajout.SecteurOrigine.RowSource = "OrigineNS500Cellule"
        Ajout.Label64.Visible = True
        Ajout.Operateur.Visible = True
        Ajout.Label62.Visible = False
        Ajout.Reprise.Visible = False
        Ajout.Label63.Visible = False
        Ajout.Label71.Visible = False
    End If
    If Ajout.Ligne.Value = "NS500" And Ajout.LieuDetection.ListIndex = 2 Then
        Ajout.SecteurOrigine.RowSource = "OrigineNS500Cellule"
        Ajout.Label64.Visible = True
        Ajout.Operateur.Visible = True
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
     
    '--------F400--------
    If Ajout.Ligne.Value = "F400" And Ajout.LieuDetection.ListIndex = 0 Then
        Ajout.SecteurOrigine.RowSource = "OrigineMCSetIQBox"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
    If Ajout.Ligne.Value = "F400" And Ajout.LieuDetection.ListIndex = 1 Then
        Ajout.SecteurOrigine.RowSource = "OrigineF400"
        Ajout.Label62.Visible = False
        Ajout.Reprise.Visible = False
        Ajout.Label63.Visible = False
        Ajout.Label71.Visible = False
    End If
    If Ajout.Ligne.Value = "F400" And Ajout.LieuDetection.ListIndex = 2 Then
        Ajout.SecteurOrigine.RowSource = "OrigineF400"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
     
    '--------Motorpact--------
    If Ajout.Ligne.Value = "Motorpact" And Ajout.LieuDetection.ListIndex = 0 Then
        Ajout.SecteurOrigine.RowSource = "OrigineMCSetIQBox"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
    If Ajout.Ligne.Value = "Motorpact" And Ajout.LieuDetection.ListIndex = 1 Then
        Ajout.SecteurOrigine.RowSource = "OrigineMTP"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = True
    End If
    If Ajout.Ligne.Value = "Motorpact" And Ajout.LieuDetection.ListIndex = 2 Then
        Ajout.SecteurOrigine.RowSource = "OrigineMTP"
        Ajout.Label62.Visible = True
        Ajout.Reprise.Visible = True
        Ajout.Label63.Visible = True
        Ajout.Label71.Visible = False
    End If
     
    End Sub
     
    Private Sub Ligne_Change()
     
        If Ajout.Ligne.Value = "MCSet" Then
            Ajout.LieuDetection.RowSource = "LigneMCSet"
            Ajout.Label71.Visible = False
            If Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2 Then
                Ajout.Label62.Visible = True
                Ajout.Reprise.Visible = True
                Ajout.Label63.Visible = True
            Else
                Ajout.Label62.Visible = False
                Ajout.Reprise.Visible = False
                Ajout.Label63.Visible = False
            End If
            Ajout.Label64.Visible = False
            Ajout.Operateur.Visible = False
        Else
            If Ajout.Ligne.Value = "NS500" Then
                Ajout.LieuDetection.RowSource = "LigneNS500"
                Ajout.Label64.Visible = True
                Ajout.Operateur.Visible = True
                Ajout.Label71.Visible = False
                If Ajout.LieuDetection.ListIndex = 2 Then
                    Ajout.Label62.Visible = True
                    Ajout.Reprise.Visible = True
                    Ajout.Label63.Visible = True
                Else
                    Ajout.Label62.Visible = False
                    Ajout.Reprise.Visible = False
                    Ajout.Label63.Visible = False
                End If
            Else
                If Ajout.Ligne.Value = "F400" Then
                    Ajout.LieuDetection.RowSource = "LigneF400"
                    'Ajout.SecteurOrigine.RowSource = "OrigineF400"
                    Ajout.Label64.Visible = False
                    Ajout.Operateur.Visible = False
                    Ajout.Label71.Visible = False
                    If Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2 Then
                        Ajout.Label62.Visible = True
                        Ajout.Reprise.Visible = True
                        Ajout.Label63.Visible = True
                    Else
                        Ajout.Label62.Visible = False
                        Ajout.Reprise.Visible = False
                        Ajout.Label63.Visible = False
                    End If
                Else
                    If Ajout.Ligne.Value = "PIX" Then
                        Ajout.LieuDetection.RowSource = "LignePIX"
                        'Ajout.SecteurOrigine.RowSource = "OriginePIX"
                        Ajout.Label64.Visible = False
                        Ajout.Operateur.Visible = False
                        Ajout.Label71.Visible = False
                        If Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2 Then
                            Ajout.Label62.Visible = True
                            Ajout.Reprise.Visible = True
                            Ajout.Label63.Visible = True
                        Else
                            Ajout.Label62.Visible = False
                            Ajout.Reprise.Visible = False
                            Ajout.Label63.Visible = False
                        End If
                    Else
                        If Ajout.Ligne.Value = "Motorpact" Then
                            Ajout.LieuDetection.RowSource = "LigneMTP"
                            'Ajout.SecteurOrigine.RowSource = "OrigineMTP"
                            Ajout.Label64.Visible = False
                            Ajout.Operateur.Visible = False
                            'If Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2 Then
                                Ajout.Label62.Visible = True
                                Ajout.Reprise.Visible = True
                                Ajout.Label63.Visible = True
                            'Else
                            '    Ajout.Label62.Visible = False
                            '    Ajout.Reprise.Visible = False
                            '    Ajout.Label63.Visible = False
                            'End If
                        Else
                            Ajout.LieuDetection.RowSource = ""
                            Ajout.SecteurOrigine.RowSource = ""
                        End If
                    End If
                End If
            End If
        End If
     
    End Sub
     
    Private Sub MultiPage1_Change()
     
        If MultiPage1.Value = 0 Then
            Ajout.Ligne.SetFocus
        End If
        Ajout.Controleur2.Value = Ajout.Controleur.Value
        Ajout.controleurfix.Value = Ajout.Controleur.Value
        Ajout.lignefix.Value = Ajout.Ligne.Text
        Ajout.zonefix.Value = Ajout.LieuDetection.Text
        Ajout.Affaire.Value = Ajout.Numaffaire.Value
        Ajout.Cellule.Value = Ajout.NumCel.Value
        Ajout.Schema.Value = Ajout.Numschema.Value
     
    End Sub
    Private Sub Ligne2_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub Motcle_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub Noaffaire_Enter()
     
        If Ajout.Noaffaire.Value = "" Then Noaffaire.Value = "FR-"
     
    End Sub
    Private Sub Noaffaire_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        If Ajout.Noaffaire.Value = "FR-" Then Noaffaire.Value = ""
     
    End Sub
    Private Sub Noaffaire_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    If Ajout.Noaffaire.Value = "FR-" Then Noaffaire.Value = ""
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub NoCel_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub Noschema_Enter()
     
        If Ajout.Noschema.Value = "" Then Noschema.Value = "AAM"
     
    End Sub
    Private Sub Noschema_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        If Noschema.Value = "AAM" Then Noschema.Value = ""
     
    End Sub
    Private Sub Noschema_keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    If Noschema.Value = "AAM" Then Noschema.Value = ""
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = 13 Then Cherche_Click
     
    End Sub
    Private Sub NumCel_Enter()
     
        Ajout.NumCel.Value = ""
        Ajout.Attention2.Visible = False
     
    End Sub
    Private Sub Numaffaire_Enter()
     
        Numaffaire.Value = "FR-"
        Ajout.Attention1.Visible = False
     
    End Sub
    Private Sub Numaffaire_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        If Numaffaire.Value = "FR-" Then Numaffaire.Value = ""
     
    End Sub
    Private Sub Numschema_Enter()
     
        Numschema.Value = "AAM"
        Ajout.Attention3.Visible = False
     
    End Sub
    Private Sub Numschema_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        If Numschema.Value = "AAM" Then Numschema.Value = ""
     
    End Sub
    Private Sub SecteurOrigine_Click()
     
        Ajout.TypeDefaut.RowSource = "Typo"
     
    End Sub
    Private Sub Trouver_DblClick()
     
        Modification.Show
     
    End Sub
     
    Private Function InvNumber(ByVal Number As String) As String
        Static i As Integer
        For i = 1 To Len(Number)
            Select Case Mid$(Number, i, 1)
            Case "-": Mid$(Number, i, 1) = " "
            Case "0": Mid$(Number, i, 1) = "9"
            Case "1": Mid$(Number, i, 1) = "8"
            Case "2": Mid$(Number, i, 1) = "7"
            Case "3": Mid$(Number, i, 1) = "6"
            Case "4": Mid$(Number, i, 1) = "5"
            Case "5": Mid$(Number, i, 1) = "4"
            Case "6": Mid$(Number, i, 1) = "3"
            Case "7": Mid$(Number, i, 1) = "2"
            Case "8": Mid$(Number, i, 1) = "1"
            Case "9": Mid$(Number, i, 1) = "0"
            End Select
        Next
        InvNumber = Number
    End Function
     
    Private Sub Trouver_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
       Dim i As Integer, j As Integer
       Dim strFormat As String
       Dim X As Integer
     
    'MACRO POUR FAIRE UN TRI DANS L'AFFICHAGE DES VALEURS DE L'INTERFACE
     
    Select Case ColumnHeader.Index - 1
     
    ' ------ Tri d'une colonne  contenant des Dates -------
    Case 1 'la colonne 2 les dates de création et modification
     
        Trouver.Sorted = False
        Trouver.SortKey = ColumnHeader.Index - 1
     
        'Boucle sur toutes les lignes
        For i = 1 To Trouver.ListItems.Count
     
            'Passage des données au format décimal
            Trouver.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = CDec(CDate(Trouver.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text))
        Next i
     
        ' ------ Application du tri -----------
        If Trouver.SortOrder = lvwAscending Then
            Trouver.SortOrder = lvwDescending
        Else
            Trouver.SortOrder = lvwAscending
        End If
     
        Trouver.Sorted = True
        '--------------------------------------
     
        'Boucle sur toutes les lignes
        For i = 1 To Trouver.ListItems.Count
            'Ensuite on revient au format DD/MM/YYYY
            Trouver.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = Format(CDate(Trouver.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
        Next i
     
     
    ' ------ Tri d'une colonne  contenant des valeurs numériques -------
    Case 0, 5
     
    X = ColumnHeader.Index - 1
    strFormat = String$(20, "0") & "." & String$(10, "0")
     
    Trouver.Sorted = False
    Trouver.SortKey = X
     
     
    If ColumnHeader.Index = 1 Then
        'Boucle sur toutes les lignes pour passage en format "triable"
        For i = 1 To Trouver.ListItems.Count
            Trouver.ListItems(i).Tag = Trouver.ListItems(i).Text
     
            If CDbl(Trouver.ListItems(i).Text) >= 0 Then
                Trouver.ListItems(i).Text = Format(CDbl(Trouver.ListItems(i).Text), strFormat)
            Else
                Trouver.ListItems(i).Text = "&" & InvNumber(Format(0 - CDbl(Trouver.ListItems(i).Text), strFormat))
            End If
        Next i
        '------------------------------------------------------------
     
        ' ------ Application du tri -----------
        If Trouver.SortOrder = lvwAscending Then
            Trouver.SortOrder = lvwDescending
        Else
            Trouver.SortOrder = lvwAscending
        End If
     
        Trouver.Sorted = True
        '--------------------------------------
     
        'Boucle sur toutes les lignes pour remise au format initial
        For i = 1 To Trouver.ListItems.Count
            Trouver.ListItems(i).Text = Trouver.ListItems(i).Tag
        Next i
     
    Else
     
        'Boucle sur toutes les lignes pour passage en format "triable"
        For i = 1 To Trouver.ListItems.Count
            Trouver.ListItems(i).ListSubItems(X).Tag = Trouver.ListItems(i).ListSubItems(X).Text
     
            If CDbl(Trouver.ListItems(i).ListSubItems(X).Text) >= 0 Then
                Trouver.ListItems(i).ListSubItems(X).Text = Format(CDbl(Trouver.ListItems(i).ListSubItems(X).Text), strFormat)
                Else
                Trouver.ListItems(i).ListSubItems(X).Text = "&" & InvNumber(Format(0 - CDbl(Trouver.ListItems(i).ListSubItems(X).Text), strFormat))
            End If
        Next i
        '--------------------------------------------------
     
        ' ------ Application du tri -----------
        If Trouver.SortOrder = lvwAscending Then
            Trouver.SortOrder = lvwDescending
            Else
            Trouver.SortOrder = lvwAscending
        End If
     
        Trouver.Sorted = True
        '--------------------------------------
     
        'Boucle sur toutes les lignes pour remise au format initial
        For i = 1 To Trouver.ListItems.Count
            Trouver.ListItems(i).ListSubItems(X).Text = Trouver.ListItems(i).ListSubItems(X).Tag
        Next i
     
    End If
     
     
    ' ------ Tri des colonnes  contenant du texte -------
    Case Else
        Trouver.Sorted = False
        Trouver.SortKey = ColumnHeader.Index - 1
     
        If Trouver.SortOrder = lvwAscending Then
            Trouver.SortOrder = lvwDescending
            Else
            Trouver.SortOrder = lvwAscending
        End If
     
        Trouver.Sorted = True
     
     
    End Select
    End Sub
     
    Private Sub TypeDefaut_Click()
     
        If Ajout.TypeDefaut.Value = "Documentaire" Then Ajout.Details.RowSource = "TypoDoc"
        If Ajout.TypeDefaut.Value = "Electrique" Then Ajout.Details.RowSource = "TypoElec"
        If Ajout.TypeDefaut.Value = "Mécanique" Then Ajout.Details.RowSource = "TypoMeca"
     
    End Sub
    Private Sub Userform_Initialize()
     
        Application.DisplayAlerts = False
        Deprotection
     
        Ajout.Caption = "Interface d'enregistrement d'un aléa - " & Format(Date, "dddd dd mmmm yyyy")
        'Ajout.Label36 = Format(Date, "dddd dd mmmm yyyy")
        'Application.Visible = False
        Ajout.MultiPage1.Value = 0
        'non affichage de la fenêtre reprise
        Ajout.Label62.Visible = False
        Ajout.Reprise.Visible = False
        Ajout.Label63.Visible = False
        'non affichage de la fenêtre opérateur
        Ajout.Label64.Visible = False
        Ajout.Operateur.Visible = False
        'affichage de la fenêtre schéma
        Ajout.Label69.Visible = True
        Ajout.Numschema.Visible = True
        Ajout.Ligne.SetFocus
        On Error Resume Next
        Ajout.Ligne.Text = GetSetting("SaveValeur", "Type de ligne", "Valeur Ligne")
        Ajout.Controleur.Value = GetSetting("SaveValeur", "Nom du contrôleur", "Valeur Contrôleur")
        Ajout.Numaffaire.Value = GetSetting("SaveValeur", "Numéro d'affaire", "Valeur Numaffaire")
        Ajout.NumCel.Value = GetSetting("SaveValeur", "Numéro de cellule", "Valeur NumCel")
        Ajout.Numschema.Value = GetSetting("SaveValeur", "Numéro de schéma", "Valeur Schema")
        Ajout.LieuDetection.ListIndex = GetSetting("SaveValeur", "Lieu de détection", "Valeur Lieudetection")
        If Ajout.Numaffaire.Value <> "" Then Ajout.Attention1.Visible = True
        If Ajout.NumCel.Value <> "" Then Ajout.Attention2.Visible = True
        If Ajout.Numschema.Value <> "" Then Ajout.Attention3.Visible = True
     
        'Adaptation (affichage) en fonction de la ligne et de l'étape de contrôle choisie
        If Ajout.Ligne.Text = "MCSet" And (Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2) Or _
                Ajout.Ligne.Text = "NS500" And Ajout.LieuDetection.ListIndex = 2 Or _
                Ajout.Ligne.Text = "F400" And Ajout.LieuDetection.ListIndex = 1 Or _
                Ajout.Ligne.Text = "PIX" And (Ajout.LieuDetection.ListIndex = 0 Or Ajout.LieuDetection.ListIndex = 2) Or _
                Ajout.Ligne.Text = "Motorpact" And Ajout.LieuDetection.ListIndex = 1 Then
            Ajout.Label62.Visible = True
            Ajout.Reprise.Visible = True
            Ajout.Label63.Visible = True
        End If
        If Ajout.Ligne.Text = "NS500" Then
            Ajout.Label64.Visible = True
            Ajout.Operateur.Visible = True
        End If
     
        If Ajout.Controleur.Value = "" Then
            Ajout.Controleur2.Value = ""
        Else
            Ajout.Controleur2.Value = Ajout.Controleur.Value
        End If
     
        Application.Visible = False
        Application.DisplayAlerts = True
     
    End Sub
    Private Sub Userform_keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
    'On donne la possibilité à l'utilisateur d'appuyer sur la touche Enter du clavier pour engager une recherche (pour plus de rapidité)
    If KeyCode = vbKeyEnter Then
        If MultiPage1.Value = 1 Then
            Call Cherche
        End If
    End If
     
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
        saving = 0
     
        Protection
     
        If Ajout.Ligne.Value <> "" Then SaveSetting "SaveValeur", "Type de ligne", "Valeur Ligne", Ajout.Ligne.List(Ajout.Ligne.ListIndex)
        SaveSetting "SaveValeur", "Nom du contrôleur", "Valeur Contrôleur", Ajout.Controleur.Value
        SaveSetting "SaveValeur", "Numéro d'affaire", "Valeur Numaffaire", Ajout.Numaffaire.Value
        SaveSetting "SaveValeur", "Numéro de cellule", "Valeur NumCel", Ajout.NumCel.Value
        SaveSetting "SaveValeur", "Numéro de schéma", "Valeur Schema", Ajout.Numschema.Value
        If Ajout.LieuDetection.Value <> "" Then SaveSetting "Savevaleur", "Lieu de détection", "Valeur Lieudetection", Ajout.LieuDetection.ListIndex
        Sheets("Menu").Select
        Application.Visible = True
     
    End Sub
    Encore merci pour vos réponses, je vais travailler sur les pistes que vous m'avez fourni et vous ferai un retour

    Pastis
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    déjà a mon avis c'est pas ton problème le plus important
    je vois en haut de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim LstItem As ListItem
    qui me déclenche une erreur ,pas étonnant , a aucun moment cette variable est typée
    ensuite j'ai des référence manquantes

    ensuite j'ai un évènement sur un object que je n'ai pas qui me déclenche une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Trouver_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader
    bref pas moyen de le faire démarrer sans crach des le départ
    parti de la
    si je puis m'exprimer ainsi pour optimiser quoi que se soit il faudrait tout jeter et tout refaire proprement
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Hello Patrick,

    Merci pour ton coup de main.
    Effectivement, l'outil nécessite plusieurs références :
    - MSCOMCTL.OCX
    - MSCOMCT2.OCX

    et un contrôle :
    - Microsoft ListView Control, version 6.0
    Nom : 2016-12-09_111359.jpg
Affichages : 1237
Taille : 58,3 KoNom : 2016-12-09_111426.jpg
Affichages : 1221
Taille : 55,5 Ko

    Les erreurs ne devraient plus apparaître après avoir ajouté ces références et contrôle.
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    RE
    je n'ai pas cette référence a dispos il me semble d'ailleurs que c'est sujet a débats dans nombres de post sur cette référence

    j'ai bien la listview mais pas ce Microsoft.common........6.0 il est "MANQUANT" chez moi

    je suis 2007 perso
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Patrick,

    Sur XL-2007 tout fonctionne malgré la mauvaise qualité de mon code
    Tu ne pourras donc pas voir le problème sans être sur XL-2016.
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tu as des Calendar1 dans ton code, mais le contrôle se nomme MonthView1.................
    Il faudrait que tu donnes des explications sur ton fichier pour qu'on puisse simuler le problème...
    MPi²

  13. #13
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Parmi,

    Le problème du calendar est indépendant de mon problème initial.
    En revanche, si tu veux quelques explications dessus, j'avais une USF avec un calendrier nécessitant une référence particulière qui a disparu lors du passage sous XL-2016 et que je n'arrive pas à retrouver. J'ai donc cherché sur le net et j'ai trouvé le monthview qui répond à peu près à mes attente en terme de rendu. Je n'ai pas encore terminé de travailler dessus.

    Cdlt,
    Pastis
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  14. #14
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    A tous,

    Je résume toute la problématique :
    J'ai un fichier Excel 1 qui ouvre un autre fichier Excel 2.
    Le fichier Excel 1 possède une interface qui, à l'ouverture, effectue un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Visible = False
    Pour masquer la fenêtre Excel en arrière plan.

    Le code ci-dessous se trouve dans l'USF de l'interface.
    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
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Visible = True
    test:
        On Error Resume Next
        Workbooks.Open Filename:=ThisWorkbook.Sheets("Menu").Range("B3").Value
        If Err.Number = 1004 Then
            MsgBox "Le chemin vers la base de données n'est pas défini." & Chr(10) & "Veuillez choisir le fichier de la base de données."
            chemin = Application.GetOpenFilename
            Sheets("Menu").Range("B3").Value = chemin
            If chemin = "Faux" Then Exit Sub
        End If
        If Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).ReadOnly = True Then  'on test si le fichier est en lecture seule. si oui alors on attend 2 secondes
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close
            Application.Wait (Now + TimeValue("0:00:02"))
            GoTo test
        Else
            'Mon traitement macro
            Workbooks(Workbooks("S_PFAB_005_027 - SIDEC.xlsm").Sheets("Menu").Range("B7").Value).Close True
     
    Application.Visible = False
    Application.ScreenUpdating = True
        End If
    *J'effectue un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Visible=True
    Pour éviter les problèmes de duplication des fenêtres Excel vide.

    *J'ouvre le fichier Excel 2 à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:=
    *Je teste ensuite si on rencontre l'erreur 1004 (caractéristique d'un Filename faux si je ne me trompe pas)

    *Je teste ensuite si le fichier Excel 2 est en lecture seule. Si oui j'attends 2 secondes, je le ferme et j'effectue une nouvelle tentative d'ouverture. Si non je commence mon traitement.

    *A la fin de mon traitement je ferme le fichier Excel 2 et effectue un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Visible=False
    pour éviter de garder afficher des fenêtres Excel en arrière plan.

    Depuis que j'ai utilisé le je n'ai plus de problème d'ouverture de fenêtre.
    En revanche, lorsque je ferme l'USF puis la réouvre depuis le fichier Excel 1, il m'est impossible de ferme Excel, obligé de passer par un Ctrl+Alt+Suppr...


    Pastis
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  15. #15
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Bonjour à tous,

    J'ai bien avancé pour comprendre d'où vient l'anomalie.
    J'ai donc créé un nouveau fichier bcp plus simplifié qui reprend le même type d'action.

    Le fichier : exemple.7z

    Voilà le code dans une userform:
    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
    Private Sub CommandButton2_Click()
     
    Workbooks.Open Filename:="C:\exemple\vide.xlsx"
    Workbooks("vide.xlsx").Close
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    Windows("test ouverture.xlsm").Visible = False
     
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    Windows("test ouverture.xlsm").Visible = True
     
    End Sub
    Nom : 2016-12-14_171601.JPG
Affichages : 1322
Taille : 63,3 Ko

    Le problème :
    Je clique sur un bouton sur mon fichier Excel "test ouverture". Une USF ,comportant un bouton "ouvrir", s'ouvre. Lorsque l'on clique sur le bouton "ouvrir" ça ouvre un fichier vide puis le referme tout de suite.
    Ensuite je ferme mon USF.
    Et là, il m'est impossible de fermer Excel.
    Pour fermer Excel je suis obligé de changer de feuille ou de créer une feuille dans le classeur.

    Avez-vous déjà rencontré ce problème sur Excel 2016 ??
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    J'ai un problème similaire au tien :
    Depuis que j'ai caché la serrure de ma porte d'entrée derrière une plaque blindée, je ne parviens plus à l'ouvrir, ni à la fermer et suis désespéré.
    Tu comprendras, pour le coup, le très grand intérêt personnel que je porte à cette discussion.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #17
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Bonjour unparia,

    Merci pour le coup de main mais totalement incompréhensible.
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  18. #18
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    avec 2013 est arrivée l'interface SDI au lieu de MDI antérieurement.
    Peut-être une piste pour expliquer la différence de comportement.
    https://msdn.microsoft.com/fr-fr/lib.../dn251093.aspx
    eric

  19. #19
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Bonjour Eriic !

    Merci beaucoup pour l'info. Je pense effectivement que le problème vient de là.
    Je vais creuser le sujet pour arriver à une solution

    Je donnerai la solution dès que je l'aurai trouvé.

    Pastis
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

  20. #20
    Membre actif Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Points : 209
    Points
    209
    Par défaut
    Bonjour,

    L'explication donnée par Microsoft :
    "Il n’est pas possible de fermer un classeur en cliquant sur la croix rouge « X » (bouton Fermer ) si ce classeur est ouvert par programme via un formulaire utilisateur modal. Pour contourner ce problème, il est conseillé d’ajouter le code suivant dans la procédure d’événement Layout de formulaire utilisateur, puis d’ouvrir le formulaire utilisateur mode non modal."

    J'ai essayé d'utiliser le code proposé par Microsoft pour résoudre les problèmes de fermeture des classeurs Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Layout()
        Static fSetModal As Boolean
        If fSetModal = False Then
            fSetModal = True
            Me.Hide
            Me.Show 1
        End If
    End Sub
    J'ai placé ce code dans ma USF.

    Pour ouvrir le formulaire en mode non modal j'ai ajouté dans l'usf initialize :
    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
     
    Private Sub CommandButton2_Click()
     
    Workbooks.Open Filename:="M:\PROD_GIL\NQP\SIDEC\Documents annexes\Sauvegarde originaux SIDEC\BASE TEST\test2\exemple\vide.xlsx"
    Range("A1").Select
    Workbooks("vide.xlsx").Close
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    fSetModal = False
    Application.ScreenUpdating = False
    Windows("test ouverture 2.xlsm").Visible = False
     
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    Windows("test ouverture 2.xlsm").Visible = True
    Workbooks("test ouverture 2.xlsm").Sheets("Feuil2").Select
    Workbooks("test ouverture 2.xlsm").Sheets("Feuil1").Select
     
    End Sub
    Private Sub UserForm_Layout()
        Static fSetModal As Boolean
        If fSetModal = False Then
            fSetModal = True
            Me.Hide
            Me.Show 1
        End If
    End Sub
    Sauf que ça ne résout toujours pas ce problème de fermeture.
    Une idée sur cette solution ?
    "Il est toujours plus facile de réaliser un travail que d'expliquer pourquoi on l'a fait." Martin Van Buren
    "Il y a ceux qui ont des résultats, et ceux qui ont des excuses." Moi

Discussions similaires

  1. Copier coller entre deux fichiers excel par macro
    Par miss-o-21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2009, 14h45
  2. ouverture et lecture de fichier excel par macro
    Par popline7 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/06/2008, 11h16
  3. ouverture auto d'un fichier excel par macro access
    Par pascal913 dans le forum Access
    Réponses: 5
    Dernier message: 26/07/2006, 16h50
  4. ouverture auto d'un fichier excel par macro
    Par pascal913 dans le forum Access
    Réponses: 2
    Dernier message: 26/07/2006, 12h45
  5. transfert contenu fichier excel par macro
    Par pascal913 dans le forum Access
    Réponses: 7
    Dernier message: 12/07/2006, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo