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 :

Google sheet problème script


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut Google sheet problème script
    Bonjour a tous,

    J'ai besoin d'aide pour un de mes scripts qui ne fonctinne plus.

    Je joue a fourmizzz et j'ai un tableur qui me permet grâce a la BDD publique du jeu de récupérer les dump t de mettre a jour mon tableur sur google sheet (comme ça ressemble a excel je savait pas trop ou demander de l'aide :/)

    Malheureusement depuis peut il ne fait plus les MAJ et m'affiche pleins d'erreurs :/ (Si besoin je peut fournir une copie du tableur) vola le script:

    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
    // *********************************************************************
    // *                  VARIABLES GLOBALES (PARAMETRAGE)                 *
    // *********************************************************************
     
    // Variable globale (constante) : onglet des soldes.
    var S_SHEET_SOLDES = "Soldes (Admin)";
    var S_SHEET_CONVOIS = "Convois";
    var S_SHEET_LIENS = "Liens";
    var S_SHEET_IMPORT = "Import";
    var S_SHEET_ARCHIVE = "Archive";
     
    // Variable globale (constante) : Désignations de cellules et plages de cellules.
    var S_CELL_STATUS = "D1";                  // Status de l'exécution de la mise à jour.
    var S_CELL_PREVFILE = "M3";                // Nom du fichier d'export de BDD utilisé pour la mise à jour précédente.
    var S_CELL_CURFILE = "M4";                 // Nom du fichier d'export de BDD utilisé pour la mise à jour du tableau.
    var S_CELL_PREVDATE = "I3";                // Date de mise à jour du précédent tableau.
    var S_CELL_CURDATE = "I4";                 // Date de mise à jour du tableau.
    var S_RANGE_PLAYER_NAMES = "B9:B179";      // Plage de données des Noms de joueurs.
    var S_RANGE_PLAYER_HF = "G9:G179";         // Plage de données des TdC actuels.
    var S_RANGE_PLAYER_HF_ARCHIVE = "F1:CW1";  // Plage de données des TdC actuels vlookup pour feuille archive.
    var S_COL_PLAYER_HF = "G";                 // Colonne des TdC actuels.
    var I_ROW_FIRSTPLAYER = 9;                 // Ligne du premier joueur.
    var S_RANGE_PLAYER_SOLDE = "N9:N179";      // Plage de données des Soldes.
    var S_RANGE_PLAYER_OLDSOLDE = "J9:J179";   // Plage de données des Soldes précédents.
    var S_RANGE_PLAYER_VIRTUAL = "F9:F179";    // Plage de données des TdC virtuels.
    var S_RANGE_PLAYER_OLDVIRTUAL = "D9:D179"; // Plage de données des anciens TdC virtuels.
    var S_CELL_FOUNDFILE = "O4";               // Cellule indiquant le nom d'un fichier d'export de base de donné plus récent.
    var S_CELL_TDCPREVDATE = "E2";             // Date de mise à jour du précédent tableau.
    var S_CELL_TDCCURDATE = "E3";              // Date de mise à jour du tableau.
    var S_CELL_NBPLAYER = "M5";                // Nombre de joueur ciblés.
    var S_CELL_DATESQL = "O5";                 // Date du fichier SQL en cours.
    var S_CELL_NB_SQLMAJ = "E2";               // Nombre de SQL à aller chercher pour MAJ.
    var S_CELL_TDCLINE = "E1";                 // ligne en cours page archive TdC.
    var S_RANGE_TDCDELTA = "BV9:BV179";        // Colonne des TdC sauvegardé.
     
     
     
    var S_RANGE_PLAYER_CONVOYS = "F7:GB179";    // Plage de données de saisie des convois.
     
    var I_ROW_ARCHIVES = 12;                   // Première ligne d'archive dans la page liens.
    var I_COL_DEBUT_ARCHIVES = 2;              // Colonne pour la date de début de prise en compte des convois de l'archive.
    var I_COL_FIN_ARCHIVES = 3;                // Colonne pour la date de fin de prise en compte des convois de l'archive.
    var I_COL_LIEN_ARCHIVES = 4;               // Colonne pour le lien de l'archive.
    var I_MAX_ROW_ARCHIVES = 150;              // Dernière ligne possible pour archiver les fichiers.
     
     
    // CONSERVER LES TRACES CAR C'EST LA FONCTION DE TRACE QUI FAIT LES FLUSH EMPECHANT L'ENCHAINEMENT DES TRAITEMENTS DE PLANTER !
    var I_DEBUG_MODE = 1;               // Mettre à 1 pour les traces, 0 sans traces.
    var S_DEBUG_SHEET = "Log";          // Feuille de Log pour enregistrer les traces.
    var I_DEBUG_MAX_LINE = 250;         // Nombre maximal de lignes dans la feuille de log.
    var I_DEBUG_START_LINE = 6;         // Première ligne pour les traces.
    var I_DEBUG_BEFORE_LINE = 4;        // Ligne pour afficher la dernière sauvegarde avant mise à jour.
    var I_DEBUG_AFTER_LINE = 5;         // Ligne pour afficher la dernière sauvegarde après mise à jour.
    var gsDebugLine = 6;                // ligne courante pour les traces.
     
    var I_BIN_TDC = 1;                  // Mettre à 1 pour les gain journaliers, 0 sans sans gain/archive.
    var gsGTDCLine = 5;                 // Ligne courante pour les archives tdc.
     
    var gsURL_Base = "http://s2.fourmizzz.fr/BDDJoueur/";
    var gsURL_Search = "http://s2.fourmizzz.fr/BDDJoueur/?C=M;O=D";
    var gsURL_PageAlliance = "http://s2.fourmizzz.fr/classementAlliance.php?alliance=tagalliance"
     
    var gsSheetLog = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_DEBUG_SHEET);
    var gsSheetSoldes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_SHEET_SOLDES);
    var gsSheetLiens = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_SHEET_LIENS);
    var gsSheetImport = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_SHEET_IMPORT);
    var gsSheetArchive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_SHEET_ARCHIVE);
     
    // *********************************************************************
    // *                        FONCTIONS GENERALES                        *
    // *********************************************************************
     
    // ---------------------------------------------------------------------
    // Fonction GetLocalDateTime
    // Récupère la date et heure courante au format chaine.
    // ---------------------------------------------------------------------
    function GetLocalDateTime()
    {
      var now = new Date();
      var sDate = now.toLocaleString();
      sDate = sDate.replace(" CET", "");
      sDate = sDate.replace(" CEST", "");
      return sDate;
    }
     
    // ---------------------------------------------------------------------
    // Fonction GetCompatStringDateTime
    // Récupère la date et heure courante au format chaine compatible avec le tableur.
    // ---------------------------------------------------------------------
    function GetCompatStringDateTime()
    {
      var now = new Date();
      var sDate = now.getDate() + "/" + (now.getMonth() + 1) + "/" + now.getYear() + " " + now.getHours()+":" + now.getMinutes() + ":" + now.getSeconds();
      return sDate;
    }
     
    // ---------------------------------------------------------------------
    // Fonction DebugTrace
    // Affiche une trace dans une feuille de log...
    // ---------------------------------------------------------------------
    function DebugTrace(aMsg)
    {
      if (I_DEBUG_MODE)
      {
        gsDebugLine = gsSheetLog.getRange("C1").getValue();
        gsSheetLog.getRange(gsDebugLine, 2).setValue(GetLocalDateTime());
        gsSheetLog.getRange(gsDebugLine, 3).setValue(aMsg);
        gsDebugLine++;
        if (gsDebugLine > I_DEBUG_MAX_LINE) gsDebugLine = I_DEBUG_START_LINE;
        gsSheetLog.getRange("C1").setValue(gsDebugLine);
        gsSheetLog.getRange(gsDebugLine, 2).setValue("");
        gsSheetLog.getRange(gsDebugLine, 3).setValue("");
        SpreadsheetApp.flush();
      }
      return 0;
    }
    function DebugTrace2(aMsg, aLine)
    {
      if (I_DEBUG_MODE)
      {
        gsSheetLog.getRange(aLine, 2).setValue(GetLocalDateTime());
        gsSheetLog.getRange(aLine, 3).setValue(aMsg);
        SpreadsheetApp.flush();
       }
      return 0;
    }
    function ResetTrace()
    {
      gsSheetLog.getRange(I_DEBUG_START_LINE, 2, (I_DEBUG_MAX_LINE - I_DEBUG_START_LINE + 1), 2).clearContent()   
      gsSheetLog.getRange("C1").setValue(I_DEBUG_START_LINE);
    }
     
    // ---------------------------------------------------------------------
    // Fonction onOPen
    // Trigger sur l'ouverture du fichier pour afficher le menu GrimoireHeart.
    // ---------------------------------------------------------------------
    function onOpen() 
    {
      var menuEntries = [ {name: "0 : Rechercher base Fourmizzz avant mise à jour", functionName: "CheckNextBaseForceRefresh"},
                          {name: "1-2 : Début de mise à jour (Verrouillage et Sauvegarde)", functionName: "Update_Start"},
                          {name: "3 : Réinitialisation du Log (Après sauvegarde)", functionName: "ResetTrace"},
                          {name: "4-8 : Mise à jour (Mise à jour du tableur)", functionName: "Update_Main"},
                          {name: "9-11 : Fin de mise à jour (Sauvegarde et déverrouillage)", functionName: "Update_End"},
                          null,
                          {name: "1 : Verrouillage document en lecture seule", functionName: "Update_Lock"},
                          {name: "2 : Backup avant MAJ", functionName: "BackupMAJ1"},
                          {name: "4 : Mise à jour Soldes & Convois", functionName: "Update_SoldesConvois"},
                          {name: "5 : Mise à jour TdC Actuels", functionName: "Update_TdC"},
                          {name: "6 : Mise à jour Date & Nom de fichier", functionName: "Update_DateFichier"},
                          {name: "7 : Traitements complémentaires", functionName: "Update_Special"},
                          {name: "8 : Ajout du lien vers l'archive", functionName: "Update_AddBackupLink"},
                          {name: "9 : Archive tdc", functionName: "Copy_TdC"},
                          {name: "10 : Backup après MAJ", functionName: "BackupMAJ2"},
                          {name: "11 : Déverrouillage document", functionName: "Update_UnLock"},
                          null,
                          {name: "A - Backup", functionName: "Backup"},
                          {name: "B - Archive TdC", functionName: "Copy_TdC"},
                          null,
                          {name: "Afficher toutes les lignes et colonnes masquées de la feuille", functionName: "UnHideAll"},
                          null,
                          {name: "A propos...", functionName: "About"} ];
      SpreadsheetApp.getActiveSpreadsheet().addMenu("MISE A JOUR DE La nomalliance", menuEntries);
    }
     
    // ---------------------------------------------------------------------
    // Fonction setStatus
    // Affiche le statut de mise à jour.
    // ---------------------------------------------------------------------
    function setStatus(aMsg)
    {
      gsSheetSoldes.getRange(S_CELL_STATUS).setValue(aMsg);
      SpreadsheetApp.flush();
    }
     
    // *********************************************************************
    // *                     FONCTIONS DE MISE A JOUR                      *
    // *********************************************************************
     
    // ---------------------------------------------------------------------
    // Fonction Update
    // Déroule l'ensemble de la procédure de mise à jour. Interrompt le travail
    // et affiche un message d'erreur si quelque chose s'est mal passé.
    // EDIT 04/03 : coupé en 3 pour éviter les dépassement de temps d'exécution.
    // ---------------------------------------------------------------------
    function Update_Start()
    {
      DebugTrace("Update_Start - DEBUT DE SCRIPT - DEBUT de procédure de mise à jour.");
     
      // Verrouillage du fichier en lecture seule pour les Anonymes.
      iRetValue = Update_Lock();
     
      // Sauvegarde du fichier Avant mise à jour... 
      // (Attente de 5 sec avant et après pour essayer de résoudre les soucis d'enchainement de commandes)
      Utilities.sleep(5000); 
      iRetValue = BackupMAJ1();
      Utilities.sleep(5000);
     
      DebugTrace("Update_Start - FIN DE SCRIPT.");
      return 0;
    }
    function Update_Main()
    {
      DebugTrace("Update_Main - DEBUT DE SCRIPT");
     
      // Vérification de la disponibilité d'une Base plus récente
      setStatus("MAJ : Recherche d'un fichier d'export de base plus réçent...");
      iRetValue = CheckNextBaseForceRefresh().indexOf("Aucun") == -1 ? 0 : -1;
     
      // Mise à jour des valeurs du Tableau.
      if (iRetValue == 0) iRetValue = Update_SoldesConvois();
     
      // Mise à jour des TdC Actuels.
      DebugTrace("Update_Main - Lecture des TdC dans la base..."); 
      if (iRetValue == 0) iRetValue = Update_TdC();
     
      // Mise à jour des dates et nom de fichier d'export de base.
      if (iRetValue == 0) iRetValue = Update_DateFichier();
     
      // Traitements complémentaires.
      setStatus("MAJ : Traitements complémentaires...");
      if (iRetValue == 0) iRetValue = Update_Special();
     
      // Mise à jour du Statut.
      var sMsgFin = "MAJ : " + (iRetValue != 0 ? "interrompue..." : "terminée.");
      setStatus(sMsgFin);
      DebugTrace("Update_Main - " + sMsgFin);
     
      // Traitement de l'archive et ajout du lien...
      if (iRetValue == 0) iRetValue = Update_AddBackupLink();
     
      DebugTrace("Update_Main - FIN DE SCRIPT");
      return 0;
    }
    function Update_End()
    {
      DebugTrace("Update_End - DEBUT DE SCRIPT");
      DebugTrace("Archive TdC - Debut");
        iRetValue = Copy_TdC();
      DebugTrace("Archive TdC - Fin");
     
      // Sauvegarde du fichier Après mise à jour...
      // (Attente de 5 sec avant et après pour essayer de résoudre les soucis d'enchainement de commandes)
      Utilities.sleep(5000); 
      iRetValue = BackupMAJ2();
      Utilities.sleep(5000); 
     
      // Deverrouillage du fichier après mise à jour...
      if (iRetValue == 0) iRetValue = Update_UnLock();
     
      // Mise à jour du Statut.
      DebugTrace("Update_End - FIN DE SCRIPT - FIN de procédure de mise à jour.");
      return 0;
    }
     
     
    // ---------------------------------------------------------------------
    // Fonction CopieTdC
    // Copie les TdC des joueurs pour la feuille archive.
    // Copie aussi le gain de TdC journalier par membre.
    // ---------------------------------------------------------------------
     
    function Copy_TdC()
    {
      if (I_BIN_TDC)
      {
        var nbplayer = gsSheetSoldes.getRange(S_CELL_NBPLAYER).getValue();
     
        // Archivage TdC des membres
        gsGTDCLine = gsSheetArchive.getRange(S_CELL_TDCLINE).getValue();
        gsSheetArchive.getRange(gsGTDCLine, 4).setValue(gsSheetSoldes.getRange(S_CELL_DATESQL).getValue());
        gsSheetArchive.getRange(gsGTDCLine, 6, 1, nbplayer).setValues(gsSheetArchive.getRange(S_RANGE_PLAYER_HF_ARCHIVE).getValues());
     
        // Gain TdC/membre
        gsSheetArchive.getRange(gsGTDCLine, 3).setValue(gsSheetSoldes.getRange("E3").getValue());
     
        // Nombre de membres
        gsSheetArchive.getRange(gsGTDCLine, 2).setValue(gsSheetSoldes.getRange("E8").getValue());
     
        // Incrémentation + une ligne
        gsGTDCLine++;
        gsSheetArchive.getRange(S_CELL_TDCLINE).setValue(gsGTDCLine);
        SpreadsheetApp.flush();
     
        DebugTrace("Archive TdC - FIN DE SCRIPT")
      }  
      return 0;
    }
     
     
     
     
    // ---------------------------------------------------------------------
    // Fonction CheckNextBase
    // Vérifie la présence d'un fichier d'export de BDD pour le jour suivant
    // de celui utilisé pour mettre à jour le tableau actuel.
    // Valeur de retour : "Aucune" ou nom du fichier.
    // ---------------------------------------------------------------------
    function CheckNextBaseForceRefresh()
    {
      var now = new Date();
      var sCurrentFile = gsSheetSoldes.getRange(S_CELL_CURFILE).getValue();
     
      DebugTrace("CheckNextBaseForceRefresh - Vérification de l'existence d'un fichier d'export de base plus réçent..."); 
      // Ajoute un paramètre bidon pour forcer le rechargement de la page.
      gsURL_Search = gsURL_Base + "?C=M;O=D;bidon=" + now.getTime();
      // Recherche d'une base un jour après la dernière utilisée.
      var sNextFile = CheckNextBase(sCurrentFile);
      // Mise à jour de l'info dans la feuille Soldes et trace.
      gsSheetSoldes.getRange(S_CELL_FOUNDFILE).setValue(sNextFile);
      DebugTrace("CheckNextBaseForceRefresh - Fin de script. Recherche plus réçent que \"" + sCurrentFile + "\" dans \"" + gsURL_Search + "\", trouvé : " + sNextFile);
      return sNextFile;
    }
    function CheckNextBase(asFileName)
    {
      var iRetValue = -1;
      var sCurrentFile = asFileName;
     
      // Lecture du contenu du dossier.
      var sResponse = UrlFetchApp.fetch(gsURL_Search);
      var sTextfile = sResponse.getContentText();
     
      // On tente d'incrémenter d'un jour, et on regarde si le fichier existe sur le serveur.
      var iJour = parseInt(sCurrentFile.substring(0, 2), 10);
      //DebugTrace("Parse  " + sCurrentFile.substring(0, 2) + ", found number = " + iJour + ".  parseInt(\"08\", 10) = " + parseInt("08", 10));
      var sJour = iJour < 9 ? "0" + (iJour + 1) : (iJour + 1);
      var sNextFile = sJour + sCurrentFile.substring(2, sCurrentFile.length);
      //if (sNextFile.length < sCurrentFile.length) sNext = "0" + sNextFile;
      iRetValue = sTextfile.indexOf(sNextFile, 0);
      DebugTrace("Search " + sNextFile + ", found = " + iRetValue);
     
      // Si ca ne fonctionne pas, on tente de passer au mois suivant.
      if (iRetValue < 0)
      {
        var iMois = parseInt(sCurrentFile.substring(3, 5), 10);
        var sMois = iMois < 9 ? "0" + (iMois + 1) : (iMois + 1);
        sNextFile = "01-" + sMois + sCurrentFile.substring(5, sCurrentFile.length);
        iRetValue = sTextfile.indexOf(sNextFile, 0);
        DebugTrace("Search " + sNextFile + ", found = " + iRetValue);
      }
     
      // Si ca ne fonctionne pas, on tente de passer à l'année suivante.
      if (iRetValue < 0)
      {
        var iAnnee = parseInt(sCurrentFile.substring(6, 10), 10);
        var sAnnee = iAnnee + 1;
        sNextFile = "01-01-" + sAnnee + sCurrentFile.substring(10, sCurrentFile.length);
        iRetValue = sTextfile.indexOf(sNextFile, 0);
        DebugTrace("Search " + sNextFile + ", found = " + iRetValue);
      }
     
      return iRetValue == -1 ? "Aucun" : sNextFile;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Update_Lock
    // Vérrouille la feuille pour mise à jour.
    // ---------------------------------------------------------------------
    function Update_Lock() 
    {
      var iStep = 5;   // Intervalle du décompte en secondes.
      var iDelay = 30; // Durée totale du décompte en secondes.
     
      // Compte à rebour avant verrouillage...
      for (iTimer = iDelay; iTimer > 0; iTimer = iTimer - iStep)
      {
        setStatus("MAJ : Verrouillage dans " + iTimer + " secondes");
        //DebugTrace("Update_Lock - Verrouillage dans " + iTimer + " secondes");
        Utilities.sleep(iStep * 1000);
      }
     
      // Verrouillage.
      setStatus("MAJ : Verrouillé pour mise à jour...");
      DebugTrace("Update_Lock - Verrouillage du document..."); 
     
      SpreadsheetApp.getActiveSpreadsheet().setAnonymousAccess(true, false);
      DebugTrace("Update_Lock - Fin de script.") 
      return 0;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Backup
    // Fait une copie de sauvegarde du document.
    // Valeur de retour : "OK" ou message d'erreur.
    // ---------------------------------------------------------------------
    function Backup() { return BackupTagged(""); }
    function BackupMAJ1() { return BackupTagged(" AVANT MAJ"); }
    function BackupMAJ2() { return BackupTagged(" APRES MAJ"); }
    function BackupTagged(sTag)
    {
      var iRetValue = 0;
      var sFileName = SpreadsheetApp.getActiveSpreadsheet().getName() + "- Backup" + sTag+ " - " + GetLocalDateTime();
     
      if (sTag == " AVANT MAJ") { DebugTrace2(sFileName, I_DEBUG_BEFORE_LINE); setStatus("MAJ : Sauvegarde AVANT"); }
      if (sTag == " APRES MAJ") { DebugTrace2(sFileName, I_DEBUG_AFTER_LINE); setStatus("MAJ : Sauvegarde APRES"); }
      DebugTrace("Backup - Sauvegarde du fichier : " + sFileName); 
     
      SpreadsheetApp.flush();
      Utilities.sleep(5000);  
      DocsList.copy(DocsList.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()), sFileName);  
      DebugTrace("Backup - Fin de script. Sauvegarde terminée."); 
     
      return iRetValue;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Update_SoldesConvois
    // Reporte les soldes et TdC virtuels, et annule les convois.
    // ---------------------------------------------------------------------
    function Update_SoldesConvois()
    {
      setStatus("MAJ : Soldes, Ancien Virtuel, convois");
     
      // Report Solde -> Ancien Solde
      DebugTrace("Update_SoldesConvois - Report Solde -> Ancien Solde"); 
      gsSheetSoldes.getRange(S_RANGE_PLAYER_OLDSOLDE).setValues(gsSheetSoldes.getRange(S_RANGE_PLAYER_SOLDE).getValues())
     
      // Report TdC Virtuel -> Ancien TdC Virtuel
      DebugTrace("Update_SoldesConvois - Report TdC Virtuel -> Ancien TdC Virtuel"); 
      gsSheetSoldes.getRange(S_RANGE_PLAYER_OLDVIRTUAL).setValues(gsSheetSoldes.getRange(S_RANGE_PLAYER_VIRTUAL).getValues())
     
      // Mise à zéro des convois. 
      DebugTrace("Update_SoldesConvois - Mise à zéro des convois"); 
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName(S_SHEET_CONVOIS).getRange(S_RANGE_PLAYER_CONVOYS).clearContent();
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Pololamag").getRange("D6:D94").clearContent();
     
      // Report TdC actuel -> TdC actuel sauvegarde
      DebugTrace("Update_SoldesConvois - Report TdC actuel -> TdC actuel sauvegarde"); 
      gsSheetSoldes.getRange(S_RANGE_PLAYER_HF).setValues(gsSheetSoldes.getRange(S_RANGE_TDCDELTA).getValues())
     
      DebugTrace("Update_SoldesConvois - Fin de script."); 
     
      return 0;
    }
     
    // ---------------------------------------------------------------------
    // Fonction UpdateTdC
    // Met à jour les TdC des joueurs.
    // Valeur de retour : "OK" ou message d'erreur.
    // ---------------------------------------------------------------------
    function Update_TdC()
    {
      var sNextName = CheckNextBaseForceRefresh();
      var sStart = "INSERT INTO `BDDJoueurs` VALUES (";
      var sEnd = "/*!40000 ALTER TABLE `BDDJoueurs` ENABLE KEYS */;";
      var sFileName = gsURL_Base + sNextName;
     
      setStatus("MAJ : Lecture des TdC dans la base...");
      DebugTrace("Update_TdC - Lecture dans le fichier : " + sFileName);
     
      // Copies de la colonne des noms de joueurs et de la colonne des TdC dans deux tableaux.
      var tPlayerGH = gsSheetSoldes.getRange(S_RANGE_PLAYER_NAMES).getValues();
      var tTdCGH = gsSheetSoldes.getRange(S_RANGE_PLAYER_HF).getValues();
     
      // Lecture du contenu du fichier .sql
      var sResponse = UrlFetchApp.fetch(sFileName);
      var sTextfile = sResponse.getContentText();
     
      // Sélection de la ligne du fichier qui contient les données des joueurs.
      var iPosStart = sTextfile.indexOf(sStart, 0);
      var iPosEnd = sTextfile.indexOf(sEnd, 0) - 2;
      var sLine = sTextfile.substring(iPosStart, iPosEnd);
      DebugTrace("Update_TdC - Nombre d'octet des données joueurs : " + sLine.length);
     
      var iSubPos1 = 0;
      var iSubPos2 = 0;
      var iSubPos3 = 0;
      var sMsg = "OK";
      var sMsg2 = "";
      var iNbPlayer = 0;
      var sName = "Pour stocker le nom du joueur avec quotes";
      for (p = 0; p < tPlayerGH.length; p++)
      {
        sName = "'" + tPlayerGH[p][0] + "'";
        if (sName.length > 2)
        {
          // Recherche du joueur.  (198,'Stalky',36,13,'GH','5215',55,120,0,0,187205),(757,'mcflan',11,40,'GH','4800',59,89,0,0,73894)    
          iSubPos1 = sLine.indexOf(sName, 0);
          if (iSubPos1 == -1) 
          {
            DebugTrace("Update_TdC - Joueur NON trouvé : " + sName);
            if (sMsg.length > 5) sMsg = sMsg + ", " + tPlayerGH[p];
            else sMsg = "Joueur(s) non trouvé(s) = " + tPlayerGH[p];
            tTdCGH[p][0] = 0;
          } else
          {
            iNbPlayer++;
            // Recherche du TdC du joueur.
            iSubPos2 = iSubPos1
            for (i = 0; i < 9; i++)
            {
              iSubPos2 = sLine.indexOf(",", iSubPos2) + 1;
            }
            iSubPos3 = sLine.indexOf(")", iSubPos2);
            tTdCGH[p][0] = sLine.substr(iSubPos2, iSubPos3 - iSubPos2);
            // DebugTrace("Update_TdC - Joueur trouvé : " + sName + " (TdC = " + tTdCGH[p][0] + " cm²)");
            if (sMsg2.length > 5) sMsg2 = sMsg2 + ", " + tPlayerGH[p] + " (TdC = " + tTdCGH[p][0] + " cm²)";
            else sMsg2 = ", Joueur(s) trouvé(s) = " + tPlayerGH[p] + " (TdC = " + tTdCGH[p][0] + " cm²)";
          }
        } else {
          tTdCGH[p][0] = 0;
        }
      }
      // Mise à jour du tableau.
      setStatus("MAJ : Report des TdC dans le tableur...");
      DebugTrace("Update_TdC - Nombre de joueurs : " + iNbPlayer);
      gsSheetSoldes.getRange(S_RANGE_PLAYER_HF).setValues(tTdCGH);
      DebugTrace("Update_TdC - TdC mis à jour.");
     
      DebugTrace("Update_TdC - Statut en fin de script : " + sMsg + sMsg2);
      return 0;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Update_DateFichier
    // Reporte la date de mise à jour et lr fichier d'export de base et 
    // mets à jour les nouveaux..
    // ---------------------------------------------------------------------
    function Update_DateFichier()
    {
      setStatus("MAJ : Date et version du fichier...");
     
      // Report du nom de fichier de relevé de TdC + Ecriture du nouveau.
      DebugTrace("Update_DateFichier - Mise à jour du nom du fichier de relevé de TdC...");
      var sOldFile = gsSheetSoldes.getRange(S_CELL_CURFILE).getValue();
      var sBaseExportName = gsSheetSoldes.getRange(S_CELL_FOUNDFILE).getValue();
      gsSheetSoldes.getRange(S_CELL_PREVFILE).setValue(sOldFile);
      gsSheetSoldes.getRange(S_CELL_CURFILE).setValue(sBaseExportName);
     
      // Report de la date du dernier Tableau + Mise à jour de la nouvelle.
      DebugTrace("Update_DateFichier - Mise à jour de la date et heure de mise à jour...");
      var sOldDate = gsSheetSoldes.getRange(S_CELL_CURDATE).getValue();
      var sNewDate = GetLocalDateTime();
      gsSheetSoldes.getRange(S_CELL_PREVDATE).setValue(sOldDate);
      gsSheetSoldes.getRange(S_CELL_CURDATE).setValue(sNewDate);
     
      // Report de la dernière mise à jour partielle + Mise à jour de la nouvelle.
      /*DebugTrace("Update_DateFichier - Mise à jour de la date et heure de mise à jour partielle...");
      var now = new Date();
      var sOldTdCDate = gsSheetSoldes.getRange(S_CELL_TDCCURDATE).getValue();
      var sNewTdCDate = now.getDate() + "/" + (now.getMonth() + 1) + "/" + now.getYear() + " 02:00:00";
      gsSheetSoldes.getRange(S_CELL_TDCPREVDATE).setValue(sOldTdCDate );
      gsSheetSoldes.getRange(S_CELL_TDCCURDATE).setValue(sNewTdCDate );*/
     
      DebugTrace("Update_DateFichier - Fin de script."); 
      return 0;
     }
     
    // ---------------------------------------------------------------------
    // Fonction Update_Special
    // Deverouille le document en lecture/écriture après la mise à jour.
    // ---------------------------------------------------------------------
    function Update_Special() 
    {
     
      return 0;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Update_AddBackupLink
    // Effectue les opérations nécessaire à la consultation dl'archive.
    // ---------------------------------------------------------------------
    function Update_AddBackupLink() 
    {
      setStatus("MAJ : Ajout du lien vers l'archive...");
      DebugTrace("Update_AddBackupLink - Ajout du lien vers l'archive..."); 
     
      // Récupération du nom du fichier d'archive.
      var sBackupFileName = gsSheetLog.getRange(I_DEBUG_BEFORE_LINE, 3).getValue();
     
      // Récupération des éditeurs du fichier courant.
      var tEditorUsers = SpreadsheetApp.getActiveSpreadsheet().getCollaborators();
      var ownerUser = SpreadsheetApp.getActiveSpreadsheet().getOwner();
     
      // Récupération des dates.
      var sDateDebut = gsSheetSoldes.getRange(S_CELL_PREVDATE).getValue();
      var sDateFin = gsSheetSoldes.getRange(S_CELL_CURDATE).getValue();
     
      // Recherche du fichier d'archive.
      var tFiles = DocsList.getFiles();
      var backupFile = null;
      if (tFiles.length == 0) 
      {
        DebugTrace("Update_AddBackupLink - ERREUR fichier " + sBackupFileName + " non trouvé !");
        return 0;
      } else 
      {
        for (i = 0; i < tFiles.length; i++)
        {
          if (tFiles[i].getName() == sBackupFileName) 
          {
            // Fichier identifié, on donne les droits en lecture aux utilisateurs anonymes.
            var backupID = tFiles[i].getId();
            var backupSpreadSheet = SpreadsheetApp.openById(backupID);
            backupSpreadSheet.setAnonymousAccess(true, false);
            DebugTrace("Update_AddBackupLink - Droits en lecture donnés sur le fichier : " + sBackupFileName + ".");
     
            // On ajoute les éditeurs du fichier d'origine :
            for (iUser = 0; iUser < tEditorUsers.length; iUser++) 
            { 
              backupSpreadSheet.addCollaborator(tEditorUsers[iUser]);
            }
            backupSpreadSheet.addCollaborator(ownerUser);
            DebugTrace("Update_AddBackupLink - Collaborateurs ajoutés au fichier : " + sBackupFileName + ".");
     
            // On copie le lien du fichier dans la page Liens.
            for (iRow= I_ROW_ARCHIVES; iRow < I_MAX_ROW_ARCHIVES; iRow++)
            {
              // Recherche de la première ligne disponible...
              if ((gsSheetLiens.getRange(iRow, I_COL_LIEN_ARCHIVES).getValue()).length < 5)
              {
                gsSheetLiens.getRange(iRow, I_COL_DEBUT_ARCHIVES).setValue(sDateDebut);
                gsSheetLiens.getRange(iRow, I_COL_FIN_ARCHIVES).setValue(sDateFin);
                gsSheetLiens.getRange(iRow, I_COL_LIEN_ARCHIVES).setValue(backupSpreadSheet.getUrl() + "#gid=40");
                break;
              }
            }
            DebugTrace("Update_AddBackupLink - Lien ajouté : " + backupSpreadSheet.getUrl() + "#gid=40");
          }
        }
      }
     
      DebugTrace("Update_AddBackupLink - Fin de script. Lien vers l'archive ajouté."); 
      return 0;
    }
     
    // ---------------------------------------------------------------------
    // Fonction Update_UnLock
    // Deverouille le document en lecture/écriture après la mise à jour.
    // ---------------------------------------------------------------------
    function Update_UnLock() 
    {
      setStatus("MAJ : Déverrouillage du document...");
      DebugTrace("Update_UnLock - Déverrouillage du document..."); 
     
      SpreadsheetApp.getActiveSpreadsheet().setAnonymousAccess(false, false);
      setStatus("OK");
      DebugTrace("Update_UnLock - Fin de script."); 
      return 0;
    }
     
    // *********************************************************************
    // *                         FONCTIONS AUTRES                          *
    // *********************************************************************
     
    // ---------------------------------------------------------------------
    // Fonction About
    // Affiche un message d'information.
    // ---------------------------------------------------------------------
    function About() 
    {
      Browser.msgBox("Bye nomcreateur");
    }
     
    // ---------------------------------------------------------------------
    // Fonction UnHideAll
    // Affiche toutes les lignes et colonnes masquées de la feuille courante.
    // ---------------------------------------------------------------------
    function UnHideAll()
    {
      var currentSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var fullRange = currentSheet .getRange(1, 1, currentSheet .getLastRow(), currentSheet .getLastColumn());
      currentSheet.unhideRow(fullRange );
      currentSheet.unhideColumn(fullRange );
    }
     
    // *********************************************************************
    // *                       MISE A JOUR PARTIELLE                       *
    // *********************************************************************
     
    // Supprimée
    Voila et merci d'avance si vous trouvez le soucis.

    Madeen

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    poster un code sans mise en forme ni réelle explication, dans un langage différent de VBA, pour une application différente de Excel ...

    ... ça me fait penser que l'erreur est en ligne 71, il y a un espace en trop

    (si vous commencez déjà à compter les lignes ... changez de poste vous allez perdre du temps )

    Blague à part, c'est un truc google ? pourquoi tu demande pas à son ami le moteur de recherche, il doit bien y avoir une communauté de développeurs sur ce support

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut
    Je viens de m’inscrire je ne savez pas trop ou demander et pour la mise en forme sur ce forum je sait pas :/ Je vais aussi voir sur d'autre forum...

    merci quand même :/

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ne le prend pas aussi mal, ce n'était pas méchant

    tu arrives comme un cheveu sur la soupe, avec un langage inattendu, un problème constaté mais pas réellement analysé, et une demande de solution toute faite

    ici c'est du VBA Excel, alors le premier truc qu'on se dit c'est "mais qu'est-ce qu'il fait ici ?"
    et là, on se rend compte qu'on sait même pas pourquoi tu es là, car toi-même tu ne sais pas vraiment

    je serai heureux pour toi qu'un contributeur puisse t'aider, qu'on se le dise

    peut être que sur d'autres parties du site DEVELOPPEZ.NET tu trouveras une sous-section dédiée ?

    j'ai aussi du mal à croire qu'il n'existe pas de forum ou de communauté qui développe sur un support google.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour
    oui apparemment c'est du javascript ton code je te propose donc de poster ta demande sur le bon forum ICI par exemple
    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

Discussions similaires

  1. [Autres] Script pour google Sheets
    Par monnier.f dans le forum APIs Google
    Réponses: 7
    Dernier message: 22/12/2014, 10h11
  2. problème script
    Par Didjetridoo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/04/2006, 15h12
  3. [Débutant] Problème script ressource tuto
    Par MaN@eDeN dans le forum Windows
    Réponses: 8
    Dernier message: 08/03/2006, 23h20
  4. Problème : Script PHP IE NOK Firefox OK
    Par Saiyan dans le forum Langage
    Réponses: 40
    Dernier message: 15/11/2005, 23h59

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