Bonjour le forum,

Comme vous le devinerez aisément, je débute en Script sur googlesheet.
J'essaye de transcrire du code VBA que j'ai écris.

Je bloque sur la boucle en ligne 46 le but c'est de passer en revue chaque code de la colonne d'un onglet en filtrant un second onglet avec le code récupérer dans le premier.
de copier la colonne filtrée (cellule visible) puis de la transposer dans le premier onglet devant le code récupéré puis de passer au second code et ainsi de suite.
Cette partie m’énerve un peu car toutes les opérations précédentes se font correctement (lentement mais se font) et ensuite ca tourne un peu à vide.

Et si vous pouviez me conseiller / corriger sur la partie avant pour que je puisse m'améliorer ce serai génial. quelque chose me dit que je pourrais simplifier pas mal de chose et comme j'ai d'autres projet à convertir.

J'ai d'autres opérations à faire ensuite mais je vais chercher d'abord.


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
 function traitement() {
  var classeur = SpreadsheetApp.getActiveSpreadsheet ();
  var A = classeur.getSheetByName ('A');
  var Omega = classeur.getSheetByName ('Omega');
  var OmegaSec = classeur.getSheetByName ('OmegaSec');
  var OmegaQual = classeur.getSheetByName ('OmegaQual');
  var OmegaCon = classeur.getSheetByName ('OmegaCon');
  var Groupe = classeur.getSheetByName ('Groupe');
 
  classeur.setActiveSheet (OmegaSec); //séléctionne l'onglet OmegaSec
  derliga = OmegaSec.getLastRow(); //trouve la dernière ligne d'OmegaSec
  var CopieMat = OmegaSec.getRange(2,8,derliga,1) //délimite le "range" a copier
    classeur.setActiveSheet(Omega); //séléctionne l'onglet Omega
  var Mat = Omega.getRange(2,1); //cible la destination de collage
  CopieMat.copyTo(Mat); //copie/colle le "range"
 
  Omega.getRange(2,1,derliga,1); //séléctionne les matricules
  Omega.getRange(2,1,derliga,1).removeDuplicates().activate(); //enleve les matricules en doublon
  derligb = Omega.getLastRow(); //trouve la dernière ligne d'Omega
  Omega.getRange(2,1,derligb,1).getFilter().sort(1, true); //tri alphabétique
 
  classeur.setActiveSheet(OmegaCon); //selection l'onglet OmegaCon
  derligco = OmegaCon.getLastRow ();  //trouve la dernière ligne d'OmegaCon
  var connaissance = OmegaCon.getRange(2,1,derliga,9); //copie les connaissances
 
  classeur.setActiveSheet(OmegaQual); //selection l'onglet OmegaQual
  derligq = OmegaQual.getLastRow () ;  //trouve la dernière ligne d'OmegaQual
  derligq = derligq +1 ;// incremente la dernière ligne
  var destin = OmegaQual.getRange(derligq,1);
  connaissance.copyTo(destin); //colle les connaissances
  derligq = OmegaQual.getLastRow () ; //recalcule la nouvelle dernière ligne
 
  OmegaQual.getFilter().sort(7, true); // 
 
  var MatNom = OmegaQual.getRange(2,6,derligq,2); // sélectionne les deux colonnes matricule et nom
  classeur.setActiveSheet(A); //selectionne l'onglet A
  var destin = A.getRange(5,1); // détermine la destination des matricules et noms
  MatNom.copyTo(destin); // colle matricules et noms
 
  classeur.setActiveSheet(OmegaQual);  //selection l'onglet OmegaQual
  var CodeQual = OmegaQual.getRange(2,1,derligq,1); // sélectionne la colonne de code
  classeur.setActiveSheet(A); //selectionne l'onglet A
  var destin = A.getRange(5,5); // détermine la destination la colonne de code
  CodeQual.copyTo(destin); // colle les codes
 
  classeur.setActiveSheet(Omega);
  var ligne = 2 ;
  var matricule = Omega.getRange(ligne,1).getValue();
  while(matricule != '');
  classeur.setActiveSheet(OmegaSec);      
  OmegaSec.getActiveSheet().getFilter().setColumnFilterCriteria(8, matricule);
  var habilitation = OmegaSec.getVisibleValues().getRange(2,1,derliqa,1);
  var destin = Omega.getOffset(0,1).getRange(matricule);
  habilitation.copyTo(destin, transpose);
  ligne = ligne+1;
  matricule = Omega.getRange(ligne,1).getValue();
 
 
 
  //classeur.setactivesheet(A);
  //derlig = A.getLastRow ();
 
  //classeur.setactivesheet(Omega);
  //derligb = Omega.getLastRow();
};
un grand merci pour votre aide.

Cordialement