RECHERCHE V & IMPORT RANGE entre 2 classeurs distincts

Là pour le coup le souci doit venir des données.

Dans votre fichier cible, c'est bien la colonne B (fac.meta.date_facture_emise) qui doit être comparée a la colonne A de votre fichier d'origine ?

Oui c'est exacte.

Vous avez changé vos colonnes ?

FICHIER CIBLE : (colonne B)

screenshot 2023 11 20 13 49 13

FICHIER ORIGINE : (colonne A)

screenshot 2023 11 20 13 50 04

Si c'est le numéro de facture qu'il vous faut comparer (donc colonne A du fichier cible sur colonne A du fichier d'origine), il faut modifier ainsi les données comparées :

function transfert (){
  const feuilleOrigine = SpreadsheetApp.openByUrl('URL').getSheetByName('Feuille');
  const feuilleDest =   SpreadsheetApp.openByUrl('URL').getSheetByName('Feuille');

  let dataA = feuilleOrigine.getRange('A1:A').getValues().flat(); // colonne A du fichier origine
  let dataL = feuilleOrigine.getRange('L1:L').getValues().flat(); // colonne L du ficher origine
  let colonneA = feuilleDest.getRange('A1:A').getValues().flat(); // colonne A du fichier cible

  for(i=0;i<colonneA.length;i++){
    let indice = dataA.indexOf(colonneA[i]);

    if(indice!== -1){
      feuilleDest.getRange(i+1,15).setValue(dataL[indice][0]) // 15 = colonne O à changer si necessaire
    }
  }
}

Bonjour @PierreLepinay

c'est enfin réussi. Merci infiniment.

Bien à vous,

Bonjour,

Petite remise a jour, je souhaiterai rajouter un autre onglet c'est a dire appliquer le même script pour deux onglet dans le FICHIER CIBLE ci joint le script avec les url et nom d'onglet le but c'est de rajouter le 2 ? Merci pour votre aide.

image

Bien a vous,

image

Bonjour,

à tester, plutôt que d'ajouter des lignes pour chaque feuille, complexifier le script, je l'ai scindé : un script contient les différentes feuilles, un second script attend 2 données : feuille d'origine et feuille de destination et effectue le transfert.

function feuillesATransferer (){
 let feuilleOrigine = SpreadsheetApp.openByUrl('URL').getSheetByName('Feuille1');
 let feuillesDestination = [
SpreadsheetApp.openByUrl('URL').getSheetByName('Feuille1'),
SpreadsheetApp.openByUrl('URL').getSheetByName('Feuille2')
];
 feuillesDestination.forEach(function(feuilleDestination) {
    transfert(feuilleOrigine, feuilleDestination);});}

function transfert (origine, destination){
  const feuilleOrigine =origine;
  const feuilleDest = destination;

  let dataA = feuilleOrigine.getRange('A1:A').getValues().flat(); // colonne A du fichier origine
  let dataL = feuilleOrigine.getRange('L1:L').getValues().flat(); // colonne L du ficher origine
  let colonneA = feuilleDest.getRange('A1:A').getValues().flat(); // colonne A du fichier cible

  for(i=0;i<colonneA.length;i++){
    let indice = dataA.indexOf(colonneA[i]);

    if(indice!== -1){
      feuilleDest.getRange(i+1,15).setValue(dataL[indice][0]) // 15 = colonne O à changer si necessaire
    }
  }
}

Bonjour,

Merci pour votre retour. J'ai eu un erreur ! Qu'en est-il de ligne 14 svp ? Merci

image

Bonjour @PierreLepinay,

Je me permet de vous relancer si vous pourrez svp m'éclairer sur la dernière erreur que j'ai eu lors de l'exécution du script ?

Merci infiniment

Cordialement,

Bonjour,

Ce message d'erreur signifie que le script n'arrive pas à stoker la range voulue car elle est inconnue.

Cette range étant la colonne A la raison de cette erreur doit provenir de l'url ou du nom de la feuille dans la ligne 2.

Bonjour,

Je viens de refaire le script en changeant la feuille d'origine car malheureusement l'ancienne feuille d'origine n'est plus fonctionnelle.

Ci-joint la nouvelle feuille d'origine, j'ai essayé de modifié l'url et la colonne cible mais ça n'a pas fonctionner pouvez vous svp m'éclairer ? Merci

image image

Bonjour @PierreLepinay

C'est bon j'ai trouvé, c'était le H par DATAL...

Merci infiniment pour votre aide.

Belle journée,

Si les variables dataA et dataL ont des noms qui ne sont plus en cohérence avec vos données vous pouvez les changer (il faut juste modifier toutes les occurrences Cltr+F2 ou bien clic droit > modifier toutes les occurences)

Je ne me rappelle plus de votre situation mais exemple : refFacture, numFacture, codeClient, refProduit, bref, quelque chose qui soit parlant pour vous.

idem, pour gagner en lisibilité vous pouvez aussi commenter le script en ajoutant des phrase comme par exemple : (il faut juste ajouter // au début de la phrase et si vous voulez écrire un roman sur plusieurs ligne /* votre commentaire */ )

// cette ligne sert à stocker dans une variable la colonne A contenant la référence produit à comparer
Rechercher des sujets similaires à "recherche import range entre classeurs distincts"