Aller à la dernière ligne d'écriture à l'ouverture d'un fichier

Bonjour,

Dans le cas de multifeuilles faire apparaître une boite de dialogue avec une liste de choix sur les feuilles à traiter .

peut-être ?????

@ plus

Gilbert

Voilà ce que je peux proposer

feuillealexander1

IL n'y a pas de points communs, mets le à côté

Ne sachant pas ce que tu voulais dire par à côté, j'ai placé le 'menu" en bas de ton grand script d'un autre topic.

définis le déclencheur sur onOpen

Rien ne se passe à l'ouverture.

J'ai importé dans outils> macros> onOpen

Rien ne se passe.

J'ai rajouté dans outils> macros> dernièreLigne

Rien ne se passe

Dans le déclencheur j'ai ajouté dernièreLigne

ça fonctionne mais uniquement sur l'onglet "Françoise"

J'ai importé dans outils> macros> onOpen

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

J'ai rajouté dans outils> macros> dernièreLigne

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

J'ai supprimé dans outils> macros> onOpen

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

Dans outils> macros> j'ai tous remis à zéro

Dans le déclencheur j'ai supprimé onOpen (Il ne reste que dernièreLigne)

ça fonctionne mais uniquement sur l'onglet "Françoise"

J'ai importé dans outils> macros> onOpen

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

J'ai rajouté dans outils> macros> dernièreLigne

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

J'ai supprimé dans outils> macros> onOpen

J'ai le même résultat (ça fonctionne mais uniquement sur l'onglet "Françoise")

PS: les déclencheurs étaient paramétrés sur :

Fonction à exécuter :

onOpen et ou dernièreLigne

Déploiement :

Head

source de l'évènement :

Basé sur la feuille de calcul

Type d'évènement :

A l'ouverture

je ne suis pas sûr que tu aies alors pris la dernière version du script

https://forum.excel-pratique.com/sheets/aller-a-la-derniere-ligne-d-ecriture-a-l-ouverture-d-un-fich...

c'est bien onOpen et onEdit qui doivent être déclarés en déclencheurs, pas les autres

capture d ecran 296

après tu as aussi la solution de Gilbert

Bonjour Gibert,

Voilà ce que je peux proposer

Incroyable ! En regardant ta proposition et en cherchant l'onglet "dialogue" entre "aide" et "dernière modification", je me suis aperçu que le script de Steelson avait créé un onglet "DerLigne> Dernière ligne colonne L" .

Conclusion, à l'ouverture du fichier :

ça fonctionne mais uniquement sur l'onglet "Françoise" et pour les autres onglets je clic sur DerLigne> Dernière ligne de colonne L" et ça me met sur la dernière ligne pointée !

Merci à vous 3 pour votre aide et votre dévouement qui nous facilite la vie au quotidien.

derligne

je ne suis pas sûr que tu aies alors pris la dernière version du script

/** @OnlyCurrentDoc */
function onEdit(event){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var fsource = event.source.getActiveSheet();
  var feuille = fsource.getName().toString();
  var param = doc.getSheetByName('BDD');
  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('M2').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('M2').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('E' + r.getRow() + ':I' + r.getRow());
          plage.copyTo(fdest.getRange('E' + 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;
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('DerLigne')
    .addItem('Dernière ligne colonne L', 'derniereLigne')
    .addToUi();
}

function derniereLigne() {
  var col = 'L';
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var f = doc.getActiveSheet()
  var valeurs = f.getRange(col + "1:" + col).getValues(); 
  var nbval = valeurs.filter(String).length; 
  f.getRange(col + nbval).activate(); 
}

c'est bien onOpen et onEdit qui doivent être déclarés en déclencheurs, pas les autres

J'ai reproduis ta dernière instruction et il ne se passe rien.

Et en remettant "dernièreLigne" dans le déclencheur, ça fonctionne mais uniquement sur l'onglet "Françoise" et pour les autres onglets
je clic sur DerLigne> Dernière ligne de colonne L" et ça me met sur la dernière ligne pointée !

Peux-tu me donner une copie d'écran des déclencheurs (supprime quand même tout sauf onEdit et onOpen) ?

Partage le fichier 2 minutes si besoin ... (mp)

Si ça fonctionne ...... super

Pas besoin de mon code alors ????

Salutations

Gilbert

Peux-tu me donner une copie d'éhttps://forum.excel-pratique.com/post/repondre/149680#cran des déclencheurs (supprime quand même tout sauf onEdit et onOpen) ?

Si je supprime dernièreLigne ça ne fonctionne plus sur l'onglet "Françoise" automatiquement et je devrai comme les autres onglet faire manuellement.

declencheur

Partage le fichier 2 minutes si besoin ... (mp)

Je te fais une copie ce soir.

Si ça fonctionne ...... super

Pas besoin de mon code alors ????

Salutations

Gilbert

En effet, merci pour ton aide Gilbert

CDLT

Alex

Si je supprime dernièreLigne ça ne fonctionne plus sur l'onglet "Françoise" automatiquement et je devrai comme les autres onglet faire manuellement.

declencheur

Partage le fichier 2 minutes si besoin ... (mp)

Je te fais une copie ce soir.

  1. onEdit n'est pas "à l'ouverture" mais "lors d'une modification"
  2. je plussoie supprime dernièreLigne des déclencheurs
  3. ferme/relance

sinon en effet j'attends ta copie

Si je supprime dernièreLigne ça ne fonctionne plus sur l'onglet "Françoise" automatiquement et je devrai comme les autres onglet faire manuellement.

Oui c'est vrai, mais je ne connais pas la fonction qui permet de le faire juste à l'activation d'un onglet. Du coup pour ne pas privilégier le premier onglet, j'avais pensé à ce menu supplémentaire.

In fine, la proposition de Gilbert ici https://forum.excel-pratique.com/sheets/aller-a-la-derniere-ligne-d-ecriture-a-l-ouverture-d-un-fich... est plus pertinente, d'autant que l'on pourrait l'utiliser comme menu de navigation entre onglets en masquant tous les onglets sauf celui choisi. Et sans doute lancer la boite de dialogue à l'ouverture.

Rechercher des sujets similaires à "aller derniere ligne ecriture ouverture fichier"