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

Bonjour à tous, j'utilise un fichier de tenue de compte bancaire et à chaque ouverture je dois mouliner vers le bas jusqu'à la dernière ligne écrite, je précise que la dernière ligne (celle qui m'intéresse) est pointée avec une croix toujours dans la même colonne et qu'il y en a d'autre plus bas mais ce n'est que des dépenses enregistrées ou du prévisionnel pas encore pointé, ce qui permet de connaître le solde du compte avant pointage.

Merci pour vos réponses.

Cordialement,

Alex

Oups, j'ai pas formulé ma question !

A l'ouverture du fichier Sheets y'a t-il une fonction ou autre pour l'obliger à se caler sur à la dernière ligne pointée ?

Merci pour vos réponses

CDLT

Alex

Sur ton fichier, sur quelle feuille faut-il pointer et à partir de quelle colonne ?

Private Sub Workbook_Open()
    Dim MaFeuille As Worksheet
    Dim DernLig As Long
    Dim MaCol As String

    MaCol = "B" 'A ajuster
    Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") 'A ajuster
    With MaFeuille
        DernLig = .Range(MaCol & .Rows.Count).End(xlUp).Row
        .Activate
        .Range(MaCol & DernLig).Activate
    End With
End Sub

Bonjour , GGautier

Si c'est pour Google sheets que la question est posée !!!! voilà un code

function onOpen() {
derLiVide1();
}

//aller à la dernière ligne vide
function derLiVide1() { 
 var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
     sh.setActiveCell(sh.getRange(sh.getRange(sh.getLastRow(),1).getA1Notation())); 
}

GGautier

Sur ton fichier, sur quelle feuille faut-il pointer et à partir de quelle colonne ?

Le pointage se fait sur la colonne L

Gilbert-RGI

Si c'est pour Google sheets que la question est posée !!!! voilà un code

En effet c'est Google Sheets, je vais faire le test.

Merci à tous les deux pour vos réponses.

ça fonctionne mais j'ai oublié de préciser que sur un fichier j'ai plusieurs onglets, donc lorsque je clic sur ce fichier il s'ouvre mais il prend en compte que le 1er onglet et peut-on affiner en allant jusque la dernière ligne pointée et non la dernière ligne écrite ?

Merci

comment est elle pointée ??

comment est elle pointée

avec une petite croix dans la colonne L

Bonjour Alexander

function premiereLigneVideColonneL() {
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var f = doc.getSheetByName('Feuille 2');
  var valeurs = f.getRange("L1:L").getValues(); 
  var nbval = valeurs.filter(String).length + 1; 
  f.getRange('L' + nbval).activate(); 
}

cela suppose que toutes les lignes précédentes sont cochées.

Bonjour Steelson,

cela suppose que toutes les lignes précédentes sont cochées.

Oui absolument, je test et reviens sur ce post.

Merci

Si Gilbert a une autre formulation, je suis preneur !

Arf,

TypeError: Cannot read property 'getRange' of null

tu as bien mis le nom de la bonne feuille dans la macro en remplacement de Feuille 2 ?

var f = doc.getSheetByName('Feuille 2');

J'ai pas osé mais je m'en doutais, (pourquoi feuille 2) je progresse !

tu as bien mis le nom de la bonne feuille dans la macro en remplacement de Feuille 2 ?

Je m'y attèle de suite.

Est-ce que cette formule te plaît ?

var f = doc.getSheetByName('Françoise';'Alexandre';'Compte Joint');

Sinon, j'ai du créer un déclencheur, ça fonctionne mais uniquement sur 'Françoise'

ça fonctionne mais uniquement sur 'Françoise'

Pour les autres compte, je dois aller dans chaque onglet Outils>Macros> et je clic sur "premièreLigneVideColonneL"

Si je comprends bien, ce n'est donc pas qu'à l'ouverture ! Oublie dans ce cas onOpen, et mets un bouton en haut de chaque page pour actionner premièreLigneVideColonneL Ou ajoute un menu. Et dans ce cas mets

var f = doc..getActiveSheet()

En ajoutant un menu ...

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(); 
}

Dans un script, J'ai déjà ton travail précédent. Peux-tu placer ta formule "menu" à l'intérieur de ce 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;
}

Merci.

IL n'y a pas de points communs, mets le à côté et définis le déclencheur sur onOpen. Ferme et rouvre.

Je ne me souvenais plus du topic en effet, je testerai de mon côté plus tard.

edit : test ok

nota : si tu veux la première ligne vide en cas de discontinuité il faudra changer 2 lignes

  // si discontinuité
  var valeurs = f.getRange(col + ':' + col).getValues().join().split(","); 
  var ligne = valeurs.indexOf("") + 1; 
  f.getRange(col + ligne).activate();
Rechercher des sujets similaires à "aller derniere ligne ecriture ouverture fichier"