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

APIs Google Discussion :

Rechercher dans une grande feuille (11000 lignes) [Google Sheets]


Sujet :

APIs Google

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Rechercher dans une grande feuille (11000 lignes)
    Bonjour,

    Des années que je viens fouiller ici. J'ai toujours trouvé ce que je cherchais sans avoir à poser de question ^^ mais voila il faut un début à tout.

    Déjà merci à vous tous qui sans le vouloir m'avez dépanné des centaines de fois ^^ mais voila aujourd'hui je bloque malgré les recherches ...

    J'ai une grande feuille sur google sheets (11 000 lignes). Pour le moment je parcoure toutes les lignes pour trouver celles qui correspondes à ma recherche mais le script bloque car trop de lignes.

    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
     
    function DeleteDeclarationMur(Classeur, Chantier, Logement, Mur){
     
     
      var SheetChantier, SheetLogement, SheetMur;
     
      // Ouverture de la feuille
      var FeuilleDeclarationMur = Classeur.getSheetByName("Déclaration des murs");
     
      // On recupere le numéro de la derniere ligne
      var DerniereligneDeclarationMur = FeuilleDeclarationMur.getLastRow();  
     
     
      // On stock le numéro des lignes supprimé dans cette var
      var LigneSupp = "";
     
      // On boucle sur toutes les lignes de la feuille
      for (var Ligne=3; Ligne<DerniereligneDeclarationMur; Ligne++) {
     
       SheetChantier = FeuilleDeclarationMur.getRange(Ligne, 3).getValue();
       SheetLogement = FeuilleDeclarationMur.getRange(Ligne, 4).getValue();
       SheetMur = FeuilleDeclarationMur.getRange(Ligne, 5).getValue();
     
        if( SheetMur == Mur ){
     
          if( SheetLogement == Logement && SheetChantier == Chantier ){
     
            FeuilleDeclarationMur.deleteRow(Ligne);
     
            if( LigneSupp == "" ){
              LigneSupp = Ligne;
            } else {
              LigneSupp += ";" + Ligne;
            }
     
          }
     
        }
     
      }
     
      return LigneSupp == "" ? 0 : LigneSupp;
     
    }
    je cherche un moyen pour faire ça mieux et surtout bcp bcp plus rapide.

    Merci de vos réponses.

  2. #2
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé une solution qui fonctionne bcp mieux (je sais pas pourquoi j'y ai pas pensé avant :-/ )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // On récupère les données dans un tableau plutôt que de boucler dans la feuille directement 
    var Array = FeuilleDeclaration.getRange(1, 3, FeuilleDeclaration.getLastRow(), FeuilleDeclaration.getLastColumn()).getValues();
     
    // On boucle sur toutes les lignes du tableau
    for (var Ligne=0; Ligne<Array.length; Ligne++) {
     
    }
    Les 11 000 lignes passent nickel dans la boucle en quelques secondes.

  3. #3
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Salut,

    Effectivement tu as déjà trouvé une partie essentielle de la réponse : getValues + parcours coté GS à la place d'un getValue dans une boucle de parsing du spreadsheet.
    Le même souci se posera au moment de l'enregistrement des données : préférer setValues avec un tableau de données adapté, plutôt qu'une boucle avec une insertion ligne à ligne.

    Je voulais attirer ton attention sur un autre facteur d'amélioration de performances : l'utilisation d'un cache ! A l'aide de la classe CacheService (il est aussi possible d'utiliser "PropertiesService" selon les besoins), les performances peuvent être encore améliorées en limitant au maximum l'accès au tableur.

    Bon courage !

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour l'info je regarderai ça ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche dans une autre feuille
    Par Doomro dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/07/2016, 08h41
  2. [XL-2007] Recherche dans une feuille avec résultat unique par ligne
    Par DurDur dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/03/2015, 14h40
  3. Réponses: 5
    Dernier message: 15/05/2012, 23h41
  4. [XL-2010] Fonction de recherche dans une autre feuille
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/07/2011, 20h19
  5. Recherche dans une autre feuille de Excel même classeur
    Par kourria dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2007, 22h29

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