Exporter une ligne d'écriture selon un tiers précis

Pour le moment sans n°, mais une info colonne O

/** @OnlyCurrentDoc */
function onEdit(event){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var fsource = event.source.getActiveSheet();
  var feuille = fsource.getName().toString();
  var param = doc.getSheetByName('BDN');
  var banques = param.getRange('I:I').getValues().join().split(","); 
  var r = event.source.getActiveRange();

  if (banques.indexOf(feuille) != -1){

    if (r.getColumn() == 9 || r.getColumn() == 10){ 
      var nombre = event.value;
      if (isNaN(nombre)){}else{
        var res = nombre.replace(".", ",");
        r.setValue(res);
      }  
    }

    if (r.getColumn() == 9 || r.getColumn() == 10){ 
      var dest = fsource.getRange('D'+r.getRow()).getValue().toString();
      if (banques.indexOf(dest) != -1){
        if (fsource.getRange('O' + r.getRow()).getValue() == '') {
          var fdest = doc.getSheetByName(dest);
          var values = fdest.getRange('B:B').getValues().join().split(","); 
          var derL = values.indexOf("") + 1;
          var plage = fsource.getRange('A' + r.getRow() + ':H' + r.getRow());
          plage.copyTo(fdest.getRange('A' + derL), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          if (r.getColumn() == 9){ 
            r.copyTo(fdest.getRange('J' + derL), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          if (r.getColumn() == 10){ 
            r.copyTo(fdest.getRange('I' + derL), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          fdest.getRange('O' + derL).setValue('ok transfert reçu');
          fsource.getRange('O' + r.getRow()).setValue('ok transfert émis');
          Browser.msgBox('ok transfert !');
        }
      }
    }

  }

}

Maintenant, pour la suite ...

  1. solution 1 : faire plutôt un onglet "virements" qui viendrait alimenter les 2 banques
  2. solution 2 : continuer comme nous l'avons fait, mais dans ce cas
    1. interdire une suppression de ligne (c'est vrai aussi pour le premier cas)
    2. interdire un changement de banque-destinataire
    3. répercuter les changements de valeur en utilisant le n° de virement à mettre en place colonne O

C'est pas gagné d'avance ! surtout pour interdire la suppression de ligne ... peut-être une option ici https://stackoverflow.com/questions/49438702/using-app-scripts-to-prevent-the-deletion-of-a-row-in-a...

you can dedicate one column in the row to displaying the "use count" of that row's value on the other sheets, and apply conditional formatting to the cell / row based on its value, such that your user training / onboarding methods strongly coach them to not use the delete row functionality for rows that have that format / criterion.

Dans la colonne B (Types) il y a VIRT qui correspond à virement, est-ce qu'on peut s'en servir ?

Oui mais il faut y mettre un n°, un identifiant, pour répercuter les éventuelles modifications de valeur. Ou alors on bloque toute la ligne de toute modif ?

Un numéro ou identifiant imputé automatiquement (pour éviter les doublons) dans une colonne masquée est-ce possible ?

Oui, j'ai commencé à le faire en mettant un compteur en K2 de l'onglet BDN !

Onglet BDN

  • Colonne I : tu mets le nom des banques / et tu t'assures qu'il y a un onglet du même nom
  • En K2, ne mets rien, ce sera le n° séquentiel de virement interbancaire

Onglets banques

  • colonne O : ce sera pour le numéro de virement
  • colonne P : ce sera pour la banque émettrice ou destinataire ... nécessaire pour éviter une modification du destinataire dans les lignes de virement

Pour les modifications de valeur, ce sera pris en compte et répercuté sur l'autre banque, d quoi par exemple "effacer" en mettant la valeur à 0.

Essaye la modif du destinataire dans une ligne de virement ...

A éviter ... la suppression d'un ligne de virement, google n'ayant pas de fonctionnalité de protection avec mot de passe pour bloquer

/** @OnlyCurrentDoc */
function onEdit(event){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var fsource = event.source.getActiveSheet();
  var feuille = fsource.getName().toString();
  var param = doc.getSheetByName('BDN');
  var banques = param.getRange('I:I').getValues().join().split(","); 
  var r = event.source.getActiveRange();

  if (banques.indexOf(feuille) != -1){

    // changement point en virgule
    if (columnToLetter(r.getColumn()) == 'I' || columnToLetter(r.getColumn()) == 'J'){ 
      var nombre = event.value;
      if (isNaN(nombre)){}else{
        var res = nombre.replace(".", ",");
        r.setValue(res);
      }  
    }

    // changement destinataire si virement interdit
    if (columnToLetter(r.getColumn()) == 'D'){ 
      if (fsource.getRange('P' + r.getRow()).getValue() != ''){
        r.setValue(fsource.getRange('P' + r.getRow()).getValue());
        Browser.msgBox('modif interdite pour transfert déjà enregistré !');
      }  
    }

    // virement inter banque
    if (columnToLetter(r.getColumn()) == 'I' || columnToLetter(r.getColumn()) == 'J'){ 
      var dest = fsource.getRange('D'+r.getRow()).getValue().toString();
      if (banques.indexOf(dest) != -1){
        var fdest = doc.getSheetByName(dest);
        var dest = fdest.getName().toString();
        var virement = fsource.getRange('O' + r.getRow()).getValue();

        // nouvau virement
        if (virement == '') {

          var values = fdest.getRange('A:A').getValues().join().split(","); 
          var i = values.indexOf("") + 1;
          var numV = param.getRange('K2').getValue() + 1;

          fdest.getRange('O' + i).setValue('Virement ' + numV);
          fsource.getRange('O' + r.getRow()).setValue('Virement ' + numV);
          fdest.getRange('P' + i).setValue(feuille);
          fsource.getRange('P' + r.getRow()).setValue(dest);
          param.getRange('K2').setValue(numV);
          var plage = fsource.getRange('A' + r.getRow() + ':C' + r.getRow());
          plage.copyTo(fdest.getRange('A' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          var plage = fsource.getRange('F' + r.getRow() + ':H' + r.getRow());
          plage.copyTo(fdest.getRange('F' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          if (columnToLetter(r.getColumn()) == 'I'){ 
            r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          if (columnToLetter(r.getColumn()) == 'J'){ 
            r.copyTo(fdest.getRange('I' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          fdest.getRange('D' + i).setValue(feuille);

          Browser.msgBox('ok virement ' + numV + ' !');

        // virement déjà existant
        } else {

          var values = fdest.getRange('O:O').getValues().join().split(","); 
          var i = values.indexOf(virement) + 1;
          if (i != 0) {
            if (columnToLetter(r.getColumn()) == 'I'){ 
              r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            if (columnToLetter(r.getColumn()) == 'J'){ 
              r.copyTo(fdest.getRange('I' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            Browser.msgBox('ok modification ' + virement + ' !');
          }else{
            Browser.msgBox(virement + ' non détecté - incohérence de données !');
          }

        }

      }
    }

  }

}

function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

Bonjour Steelson et merci pour ton travail et ta patience, j'ai eu beaucoup de taff depuis dimanche, en principe jeudi toute la journée je pourrais (essayer) d'appliquer ta nouvelle formule.

A Bientôt

Hello ! quel plaisir !!!

J'ai ajouté une colonne (sous-sous-Catégories) que j'ai omis de te signaler, du coup j'ai un peut modifié les lettres des colonnes dans ton script qui me semblait être concernées .

Onglet BDN :

Colonne I : tu mets le nom des banques / et tu t'assures qu'il y a un onglet du même nom "(est en (K:K))"

En K2, ne mets rien, ce sera le n° séquentiel de virement interbancaire "(est en L2)"

Onglet Banques :
je me suis aperçu que les N° de virement et les destinataires se sont installés dans chaque feuilles de compte à droite du solde.

colonne O : ce sera pour le numéro de virement "(elle s'ait installée à coté du solde de chaque feuille "(est en (P))"

colonne P : ce sera pour la banque émettrice ou destinataire ... nécessaire pour éviter une modification du destinataire dans les lignes de virement "(et en (Q))"

  • Les Débits (I) en (J) les Crédits (J) en (K), la colonne "Banques" dans la "BDN" (I:I) en (K:K)

voici ton script modifié.

/** @OnlyCurrentDoc */

function onEdit(event){

var doc = SpreadsheetApp.getActiveSpreadsheet();

var fsource = event.source.getActiveSheet();

var feuille = fsource.getName().toString();

var param = doc.getSheetByName('BDN');

var banques = param.getRange('K:K').getValues().join().split(",");

var r = event.source.getActiveRange();

if (banques.indexOf(feuille) != -1){

// changement point en virgule

if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){

var nombre = event.value;

if (isNaN(nombre)){}else{

var res = nombre.replace(".", ",");

r.setValue(res);

}

}

// changement destinataire si virement interdit

if (columnToLetter(r.getColumn()) == 'D'){

if (fsource.getRange('Q' + r.getRow()).getValue() != ''){

r.setValue(fsource.getRange('Q' + r.getRow()).getValue());

Browser.msgBox('modif interdite pour transfert déjà enregistré !');

}

}

// virement inter banque

if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){

var dest = fsource.getRange('D'+r.getRow()).getValue().toString();

if (banques.indexOf(dest) != -1){

var fdest = doc.getSheetByName(dest);

var dest = fdest.getName().toString();

var virement = fsource.getRange('P' + r.getRow()).getValue();

// nouvau virement

if (virement == '') {

var values = fdest.getRange('A:A').getValues().join().split(",");

var i = values.indexOf("") + 1;

var numV = param.getRange('L2').getValue() + 1;

fdest.getRange('P' + i).setValue('Virement ' + numV);

fsource.getRange('P' + r.getRow()).setValue('Virement ' + numV);

fdest.getRange('Q' + i).setValue(feuille);

fsource.getRange('Q' + r.getRow()).setValue(dest);

param.getRange('L2').setValue(numV);

var plage = fsource.getRange('A' + r.getRow() + ':C' + r.getRow());

plage.copyTo(fdest.getRange('A' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

var plage = fsource.getRange('F' + r.getRow() + ':H' + r.getRow());

plage.copyTo(fdest.getRange('F' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

if (columnToLetter(r.getColumn()) == 'J'){

r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

}

if (columnToLetter(r.getColumn()) == 'K'){

r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

}

fdest.getRange('D' + i).setValue(feuille);

Browser.msgBox('ok virement ' + numV + ' !');

// virement déjà existant

} else {

var values = fdest.getRange('P:P').getValues().join().split(",");

var i = values.indexOf(virement) + 1;

if (i != 0) {

if (columnToLetter(r.getColumn()) == 'J'){

r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

}

if (columnToLetter(r.getColumn()) == 'K'){

r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

}

Browser.msgBox('ok modification ' + virement + ' !');

}else{

Browser.msgBox(virement + ' non détecté - incohérence de données !');

}

}

}

}

}

}

function columnToLetter(column) {

var temp, letter = '';

while (column > 0) {

temp = (column - 1) % 26;

letter = String.fromCharCode(temp + 65) + letter;

column = (column - temp - 1) / 26;

}

return letter;

}

Voici le résultat après plusieurs essais.

"Virement inter-compte De:"

Crédit Mut / Banque Pop = 10€ ok

Crédit Mut / Compte Joint = 20€ ok

Crédit Mut / Livret A = 30€ ok

les comptes recevant le virement en "Crédit" ne mentionnent pas les "Catégories" et les "NDF"

"Modification du montant de:"

Crédit Mut / Banque Pop = 10€<110 ok

Crédit Mut / Compte Joint = 20€<120 ok

Crédit Mut / Livret A = 30€<130 ok

"Virement inter-compte De:"

Banque Pop / crédit mutuelle = 40€ - Ajoute le N°(200517) de "NDF" de la au "Débit" du et puis aprés avoir entré 40€ en "débit"

crée une ligne normale (cette somme de 40€ et ensuite changée par la "modification du montant de" et fonctionne correctement)

Banque Pop / compte joint = 50€ - Pas de "Catégories" pas de "NDF"

Banque Pop / Livret A = 60€ - Pas de "Catégories" pas de "NDF"

"Modification du montant de:"

Banque Pop / crédit mutuelle = 40€<140 ok

Banque Pop / compte joint = 50€<150 ok

Banque Pop / Livret A = 60€<160 ok

"Virement inter-compte De:"

Compte Joint / Crédit Mut = 70€ ok

Compte Joint / Banque Pop = 80€ ok

Compte Joint / Livret A = 90€ ok

les comptes recevant le virement ne mentionnent pas les "Catégories" et les "NDF"

"Modification du montant de:"

Compte Joint / Crédit Mut = 70€<170 ok

Compte Joint / Banque Pop = 80€<180 ok

Compte Joint / Livret A = 90€<190€ ok

"Virement inter-compte De:"

Livret A / Crédit Mut = 120€ ok

Livret A / Banque Pop = 130€ ok

Livret A / Compte joint = 140€ ok

les comptes recevant le virement en "Crédit" ne mentionnent pas les "Catégories" et les "NDF"

"Modification du montant de:"

Livret A / Crédit Mut = 120€<220€ ok

Livret A / Banque Pop = 130€<230€ ok

Livret A / Livret A = 140€<240€ ok

Compte Crédit Mut :

Retrait (RET) d'espèce des en "débit", il crée de suite une ligne au "crédit" ne mentionne pas les "Catégories" et les "NDF"

Lien du tableau.

https://docs.google.com/spreadsheets/d/1JLa_woBZ_nEXp08-rszprp8FnDC_OsH4mE4twyQ1zl4/edit?usp=sharing

A Bientôt

Ton code est difficile à lire, ne fais pas " mais </> pour l'insérer et garder l'indentation. Comme en plus je n'ai pas accès à la macro sur ton fichier partagé.

Mais bon, tout est ok pour toi ? si c'est le cas ferme le fil de discussion en cliquant sur

Sinon, je suis à ta disposition.

Oups ! désolé je n'ai pas encore l'habitude de tout ça, il y a quelques petit soucis.

Virement inter banque :

  • Virement de Banque Pop vers crédit mutuelle = Ajoute le N°(200517) de NDF de la Banque Pop au Débit du Crédit Mut et puis après avoir entré une somme en débit de cette même ligne, ajoute une ligne d'écriture.
  • Les comptes recevant le virement ne mentionnent pas les éléments dans les colonnes Catégories et NDF
  • Retrait (RET) d'espèce des Comptes en débit, il ajoute de suite une ligne au crédit.

Voici un lien fichier non partagé. https://docs.google.com/spreadsheets/d/1JLa_woBZ_nEXp08-rszprp8FnDC_OsH4mE4twyQ1zl4/edit?usp=sharing

Merci

avec un peu de méthode, tu devrais pouvoir adapter la macro à la colonne supplémentaire ...

Les banques sont en K

  var banques = param.getRange('K:K').getValues().join().split(","); 

I et J deviennent J et K (débits crédits) au moins 2 fois

if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){ 

le destinataire reste en D, mais la sauvegarde est passée en Q

    // changement destinataire si virement interdit
    if (columnToLetter(r.getColumn()) == 'D'){ 
      if (fsource.getRange('Q' + r.getRow()).getValue() != ''){
        r.setValue(fsource.getRange('Q' + r.getRow()).getValue());
        Browser.msgBox('modif interdite pour transfert déjà enregistré !');
      }  
    }

le numéro du virement est passé en P au lieu de O

        var virement = fsource.getRange('P' + r.getRow()).getValue();

le compteur est en L2

          var numV = param.getRange('L2').getValue() + 1;

pour la recopie, H devient I en englobant le NDF

          var plage = fsource.getRange('F' + r.getRow() + ':I' + r.getRow());

etc. etc. etc.

Comme je ne vois déjà plus le script je n'ai pas pu comparer et vérifier que tu avais mis toutes les évolutions.

A voir si j'en ai oublié !

/** @OnlyCurrentDoc */
function onEdit(event){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var fsource = event.source.getActiveSheet();
  var feuille = fsource.getName().toString();
  var param = doc.getSheetByName('BDN');
  var banques = param.getRange('K:K').getValues().join().split(","); 
  var r = event.source.getActiveRange();

  if (banques.indexOf(feuille) != -1){

    // changement point en virgule
    if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){ 
      var nombre = event.value;
      if (isNaN(nombre)){}else{
        var res = nombre.replace(".", ",");
        r.setValue(res);
      }  
    }

    // changement destinataire si virement interdit
    if (columnToLetter(r.getColumn()) == 'D'){ 
      if (fsource.getRange('Q' + r.getRow()).getValue() != ''){
        r.setValue(fsource.getRange('Q' + r.getRow()).getValue());
        Browser.msgBox('modif interdite pour transfert déjà enregistré !');
      }  
    }

    // virement inter banque
    if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){ 
      var dest = fsource.getRange('D'+r.getRow()).getValue().toString();
      if (banques.indexOf(dest) != -1){
        var fdest = doc.getSheetByName(dest);
        var dest = fdest.getName().toString();
        var virement = fsource.getRange('P' + r.getRow()).getValue();

        // nouvau virement
        if (virement == '') {

          var values = fdest.getRange('A:A').getValues().join().split(","); 
          var i = values.indexOf("") + 1;
          var numV = param.getRange('L2').getValue() + 1;

          fdest.getRange('P' + i).setValue('Virement ' + numV);
          fsource.getRange('P' + r.getRow()).setValue('Virement ' + numV);
          fdest.getRange('Q' + i).setValue(feuille);
          fsource.getRange('Q' + r.getRow()).setValue(dest);
          param.getRange('L2').setValue(numV);
          var plage = fsource.getRange('A' + r.getRow() + ':C' + r.getRow());
          plage.copyTo(fdest.getRange('A' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          var plage = fsource.getRange('F' + r.getRow() + ':I' + r.getRow());
          plage.copyTo(fdest.getRange('F' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          if (columnToLetter(r.getColumn()) == 'J'){ 
            r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          if (columnToLetter(r.getColumn()) == 'K'){ 
            r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          fdest.getRange('D' + i).setValue(feuille);

          Browser.msgBox('ok virement ' + numV + ' !');

        // virement déjà existant
        } else {

          var values = fdest.getRange('P:P').getValues().join().split(","); 
          var i = values.indexOf(virement) + 1;
          if (i != 0) {
            if (columnToLetter(r.getColumn()) == 'J'){ 
              r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            if (columnToLetter(r.getColumn()) == 'K'){ 
              r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            Browser.msgBox('ok modification ' + virement + ' !');
          }else{
            Browser.msgBox(virement + ' non détecté - incohérence de données !');
          }

        }

      }
    }

  }

}

function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

J'ai vérifié et c'est bien les modifications que j'ai fait

Et j'ai ça comme erreur :

Virement inter banque :

  • Virement de Banque Pop vers crédit mutuelle il ajoute le N°(200517) de NDF de la Banque Pop au Débit du Crédit Mut et après avoir entré une somme en débit de cette même ligne, ajoute une ligne d'écriture avec un crédit au crédit Mutuel.
  • Les comptes recevant le virement ne mentionnent pas les éléments dans les colonnes Catégories et NDF
  • Retrait (RET) d'espèce des Comptes en débit, il ajoute de suite une ligne au crédit.

Avec ce lien tu n'arrives pas à voir le script ? j'ai pourtant enlevé la protection, y'a t-il une autre manip à faire ?

https://docs.google.com/spreadsheets/d/1JLa_woBZ_nEXp08-rszprp8FnDC_OsH4mE4twyQ1zl4/edit?usp=sharing

Je ne vois toujours pas la macro, peux-tu me la donner via le forum en utilisant la balise </> afin de voir.

J'ai vérifié et c'est bien les modifications que j'ai fait

...

Virement de Banque Pop vers crédit mutuelle il ajoute le N°(200517) de NDF de la Banque Pop au Débit du Crédit Mut et après avoir entré une somme en débit de cette même ligne, ajoute une ligne d'écriture avec un crédit au crédit Mutuel.

Les comptes recevant le virement ne mentionnent pas les éléments dans les colonnes Catégories et NDF

en tous cas j'ai essayé le script que j'ai proposé sur une copie et cela fonctionne correctement

  • Retrait (RET) d'espèce des Comptes en débit, il ajoute de suite une ligne au crédit.

J'avais bien prédit ce cas de figure

Pour la réversibilité

  • C'est rigolo car si tu tapes en destinataire la feuille sur laquelle tu travailles, cela ajoutera donc sur cette feuille une nouvelle ligne inversée Débit<->Crédit

Dans ce cas, le tiers n'est pas la banque (qui est portée par le nom de l'onglet) mais toi-même

Comment as-tu fait pour comparer ?

J'ai vérifié et c'est bien les modifications que j'ai fai

a priori ceci n'a pas été fait

pour la recopie, H devient I en englobant le NDF

          var plage = fsource.getRange('F' + r.getRow() + ':I' + r.getRow());

Bonjour et merci pour ta réponse.

J'avais bien prédit ce cas de figure

Steelson a écrit :

Pour la réversibilité

C'est rigolo car si tu tapes en destinataire la feuille sur laquelle tu travailles, cela ajoutera donc sur cette feuille une nouvelle ligne inversée Débit<->Crédit

Oups désolé , j'avais en tête qu'on utiliserait et uniquement pout les virement l'association de la colonne (Types) VIRT avec la colonne des (Banques) ainsi

pour les retraits (RET) au crédit Mutuel il n'y aurait pas de nouvelle ligne inversée Débit<->Crédit.

Dimanche à 14:57

Alexander a écrit

Dans la colonne B (Types) il y a VIRT qui correspond à virement, est-ce qu'on peut s'en servir ?

Comment as-tu fait pour comparer ?

Alexander a écrit :

J'ai vérifié et c'est bien les modifications que j'ai fais

J'ai fais un copier/coller de ton script et celui du script du tableur dans un bloc note de Windows et vérifié chaque ligne.

a priori ceci n'a pas été fait

Steelson a écrit :

pour la recopie, H devient I en englobant le NDF

var plage = fsource.getRange('F' + r.getRow() + ':I' + r.getRow());

Si, mais quand j'écrit un i en majuscule il est comme ça ( I ) à moins que j'aurais fait un L minuscule ( l ) qui se ressemble comme 2 gouttes d'eau !

Voici mon script.

/** @OnlyCurrentDoc */
function onEdit(event){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var fsource = event.source.getActiveSheet();
  var feuille = fsource.getName().toString();
  var param = doc.getSheetByName('BDN');
  var banques = param.getRange('K:K').getValues().join().split(","); 
  var r = event.source.getActiveRange();

  if (banques.indexOf(feuille) != -1){

    // changement point en virgule
    if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){ 
      var nombre = event.value;
      if (isNaN(nombre)){}else{
        var res = nombre.replace(".", ",");
        r.setValue(res);
      }  
    }

    // changement destinataire si virement interdit
    if (columnToLetter(r.getColumn()) == 'D'){ 
      if (fsource.getRange('Q' + r.getRow()).getValue() != ''){
        r.setValue(fsource.getRange('Q' + r.getRow()).getValue());
        Browser.msgBox('modif interdite pour transfert déjà enregistré !');
      }  
    }

    // virement inter banque
    if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){ 
      var dest = fsource.getRange('D'+r.getRow()).getValue().toString();
      if (banques.indexOf(dest) != -1){
        var fdest = doc.getSheetByName(dest);
        var dest = fdest.getName().toString();
        var virement = fsource.getRange('P' + r.getRow()).getValue();

        // nouveau virement
        if (virement == '') {

          var values = fdest.getRange('A:A').getValues().join().split(","); 
          var i = values.indexOf("") + 1;
          var numV = param.getRange('L2').getValue() + 1;

          fdest.getRange('P' + i).setValue('Virement ' + numV);
          fsource.getRange('P' + r.getRow()).setValue('Virement ' + numV);
          fdest.getRange('Q' + i).setValue(feuille);
          fsource.getRange('Q' + r.getRow()).setValue(dest);
          param.getRange('L2').setValue(numV);
          var plage = fsource.getRange('A' + r.getRow() + ':C' + r.getRow());
          plage.copyTo(fdest.getRange('A' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          var plage = fsource.getRange('F' + r.getRow() + ':I' + r.getRow());
          plage.copyTo(fdest.getRange('F' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          if (columnToLetter(r.getColumn()) == 'J'){ 
            r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          if (columnToLetter(r.getColumn()) == 'K'){ 
            r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
          }
          fdest.getRange('D' + i).setValue(feuille);

          Browser.msgBox('ok virement ' + numV + ' !');

        // virement déjà existant
        } else {

          var values = fdest.getRange('P:P').getValues().join().split(","); 
          var i = values.indexOf(virement) + 1;
          if (i != 0) {
            if (columnToLetter(r.getColumn()) == 'J'){ 
              r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            if (columnToLetter(r.getColumn()) == 'K'){ 
              r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
            }
            Browser.msgBox('ok modification ' + virement + ' !');
          }else{
            Browser.msgBox(virement + ' non détecté - incohérence de données !');
          }

        }

      }
    }

  }

}

function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

Je vais devenir chèvre ! voila que le i est écrit comme le tien !!!

Je copie dans excel et je compare, et en effet c'est bien la même chose cette fois-ci à la correction près que tu as apportée à une faute d'orthographe que j'avais faire sur nouveau !

alors, hormis le cas du retrait, est-ce que cela fonctionne ?

Rechercher des sujets similaires à "exporter ligne ecriture tiers precis"