Récupérer une donnée dans un tableau pour l'insérer dans un second tableau

Bonjour,

Je reviens vers vous car j'ai quelques questions. Je vais commencer par la première, on verra la suite après.

J'ai une feuille A avec un tableau style base de donnée avec plusieurs colonnes dont la première est un ID.

Celui-ci est calculé à partir de plusieurs informations afin d'être unique. Du coup, même s'il met très utile, je suis bien incapable de dire quelle ligne correspond à quel ID.

J'ai une seconde feuille B avec un tableau style formulaire unique avec des informations récupérées sur une ligne de la feuille A.

Pour faire le lien entre les deux, je me sers de l'ID. Je récupère ensuite mes données à l'aide de la fonction RechecheV. Il n'y en a pas beaucoup et c'est largement suffisent comme méthode.

Je m'occupe actuellement de la programmation et pour le moment, pour vérifier que ça marche, je recopie manuellement l'ID de la feuille A dans la feuille B.

Par contre, à l'usage, je ne pourrai plus le faire manuellement. Aussi, lorsque je suis dans la feuille A, je voudrais cliquer sur un lien situé dans une cellule, (un par ligne) qui lance une macro récupérant l'ID de la ligne concernée et le recopiant dans une cellule spécifique de ma feuille B.

Je découvre petit à petit Google sheet et je le trouve très utile mais j'ai encore pas mal de lacunes.

Merci pour l'aide que vous pourrez m'apporter

Co

Bonjour,

Le plus simple pour moi serait de mettre une case à cocher en colonne A devant l'ID

Sachant alors que la cellule s'appelle par exemple

iciIdentifiant

dans la feuille

monAutreFeuille
function onEdit(e){
  if(e.value != "TRUE") return;
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('monAutreFeuille').getRange('iciIdentifiant').setValue(e.source.getActiveRange().offset(0,1).getValue())
}

Bonjour Steelson,

On retrouve toujours le même. A priori tu connais bien google sheet.

Alors j'ai essayé et ça ne m'a absolument rien fait.

Partage ton fichier ... https://www.sheets-pratique.com/fr/cours/partage

Je n'ai pas répondu sans avoir testé, donc il y a quelque chose de louche !

Je me doute bien que tu testes avant et donc comme je suis très têtue, j'ai tout revérifié.

Je n'avais pas mis la case à cocher en colonne A et donc j'avais modifier la fonction offset(0,1) par offset(0,-9)

J'ai changé le -9 par -8, ça me rapatriait bien l'info que j'avais dans la colonne 2, j'ai remis - 9 et ça a fonctionné. Les mystères de l'informatique.

Donc parfais j'achète.

J'ai une seconde question dans la continuité de la précédente.

Toujours en partant de mon document de base, j'ai monAutreFeuille1, monAutreFeuille2, etc. qui fonctionnent sur le même principe que monAutreFeuille à part que les informations récupérées dans chacune de ses feuilles sont différentes.

Je voudrais donc mettre d'autres cases à cocher dans la suite de la précédente.

Par contre, je ne comprends pas dans la formule ce qu'il faut que je modifie pour que si je coche la case de la deuxième colonne ça me change les infos de monAutreFeuille1

Pas tout pigé, mais si tu as des feuilles différentes avec des fonctionnements différents, il vaut mieux dans la fonction onEdit tester la feuille sur laquelle tu es ou bien la colonne concernée.

Ceci se fait de la manière suivante

function onEdit(e){
  var feuille = e.source.getActiveSheet();
  var cellule = e.source.getActiveRange();
  if (feuille.getName()=='une feuille' && cellule.getColumn()==x){
    // je fais ceci
  }
  else if (feuille.getName()=='une autre feuille' && cellule.getColumn()==y){
    // je fais cela
  }
}

où x et y sont les n° de colonne concernés

Je ne sais pas quel est ton niveau, si tu as besoin de plus d'aide précise exactement quelles sont les actions à réaliser ..., je suis à ta disposition.

Merci Steelson, je vais regarder ça.

Mon niveau en informatique est de plus de 40 ans d'utilisation… (A l'époque Windows n'existait pas et on travailler sous dos... J'ai même appris à programmer en Basic à l'école si ça parle encore à quelqu'un). J'ai vu l'évolution des programmes et j'ai évolué avec eux sans avoir suivi la moindre formation.

J'ai l'esprit assez logique et du coup j'arrive à me débrouiller avec ce que j'ai et des questions sur internet quand la débrouille ne marche pas.

J'utilise Word et Excel (avec utilisation des macros) depuis au moins 35 ans (j'avais même formé les personnes de mon service sur Word 5 au siècle dernier. J'ai toujours le manuel que j'avais fait si ça peut intéresser quelqu'un mais il est quelque peu désuet).
J'utilise Access depuis plus de 20 ans et je programme régulièrement des applications pour mon usage personnel ou pour des demandes particulières.

En règle général, n'ayant pas suivi vraiment de formation et n'ayant pas vraiment le temps de me plonger dans des manuels, je fais au jour le jour, je cherche le besoin du moment, si en passant par la ligne directe je ne trouve pas, je contourne le problème en passant par une autre solution qui fonctionne mais qui peut certainement être améliorée.

Par contre, j'ai découvert Google sheet il y a moins de deux mois, étant à la recherche d'une application pour faire des formulaires pour réserver les salles de ma commune.

A la base, je voulais partir de mes formulaires (faciles à créer), les intégrer dans google sheet puis rapatrier mes données dans Excel que je connais très bien pour faire le suivi. Finalement autant utiliser ce qui existe et j'ai décidé de tout faire par le biais des applications google. Mais je dois découvrir au fur et à mesure toutes les capacités de cette série de logiciel.

Mes macros sont surement pas parfaites. Je m'en rends compte quand je découvre de nouvelles fonctions sur internet, me disant qu'il aurait été plus judicieux de passer par là. Prise par le temps, je continue avec mon programme "débrouille". Vu l'urgence, quand il sera fini et qu'on pourra l'utiliser, je reviendrais par petite tranche sur mes macros pour les rendent plus "propres".

A ce moment là, je n'oublierai pas de revenir vers toi.

Bonjour Steelson,

Voici la formule qui fonctionne presque par rapport à mes besoins :

function onEdit(e){
  var feuille = e.source.getActiveSheet();
  var cellule = e.source.getActiveRange();

  if (feuille.getName()=='feuille_base' && cellule.getColumn()==10){          SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Feuille_1').getRange('iciIdentifiant1').setValue(e.source.getActiveRange().offset(0,-9).getValue());
Spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feuille_1'), true);
Spreadsheet.getRange('B7').activate();  }

  else if (feuille.getName()=='feuille_base' && cellule.getColumn()==11){  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Feuille_2').getRange('iciIdentifiant2').setValue(e.source.getActiveRange().offset(0,-10).getValue());

  }
}

La feuille où se trouve les cases à cocher est la même "feuille_base"

La partie qui rapatrie mon ID soit dans la cellule "iciIdentifiant1" soit dans la cellule "iciIdentifiant2" suivant la colonne dont j'ai coché une case fonctionne

J'ai voulu rajouter dans mon if :

Spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feuille_1'), true);
Spreadsheet.getRange('B7').activate(); 

J'utilise régulièrement cette fonction et elle marche sans problème, me permettant de me rendre dans la "feuille_1" sur la cellule B7

Du coup, je demande qu'il rapatrie mon ID puis se rende dans la feuille où j'ai rapatrié l'ID. Il reste dans ma "feuille_base" et je ne comprends pas pourquoi.

Une suggestion ?

Une suggestion c'est surtout que tu partages ton fichier ou un fichier représentatif comme suit ... https://www.sheets-pratique.com/fr/cours/partage

Voilà https://docs.google.com/spreadsheets/d/1P0MdhJPMi32kYSnne_wa7sQE96gdsFyAuDxLN0_04fw/edit?usp=sharing

La feuille "Modif_Date" n'est pas encore construite.

L'important pour l'instant c'est que l'ID aille en cellule A1.

Ensuite, je veux donc me rendre dans la feuille où l'ID a été saisi.

proposition

function onEdit(e) {
  var feuille = e.source.getActiveSheet();
  var cellule = e.source.getActiveRange();
  if (feuille.getName() == 'LIENS' && cellule.getValue() == true) {
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    if (cellule.getColumn() == 7) {
      var sh = ss.getSheetByName('Besoin_mobilier_unique')
      sh.getRange('iciIdentifiant').setValue(e.source.getActiveRange().offset(0, -6).getValue());
      cellule.setValue(!cellule.getValue())
      ss.setActiveSheet(sh);
      sh.getRange('B5').activate();
    }
    else if (cellule.getColumn() == 8) {
      var sh = ss.getSheetByName('Modif_Date')
      sh.getRange('iciIdentifiantdates').setValue(e.source.getActiveRange().offset(0, -7).getValue());
      cellule.setValue(!cellule.getValue())
      ss.setActiveSheet(sh);
      sh.getRange('B5').activate();
    }
  }
}

Je viens de tester et c'est exactement ce que je veux

Merci Steelson

Co

Rechercher des sujets similaires à "recuperer donnee tableau inserer second"