Selectionner l'avant dernière cellule

Résolu
Bonjour,

Je souhaiterais créer un programme qui pour une ligne donnée prend la valeur de la première cellule puis celle de l'avant dernière cellule (non vide) et effectue une opération entre les valeurs de ces deux cellules.

Le problème est que je ne connais pas la synthaxe pour désigner l'avant dernière cellule, en clair que dois je ecrire pour affecter la valeur de l'avant dernière cellule non vide de ma ligne A a ma variable x

x=?

Merci beaucoup d'avance
Configuration: Windows 2000 Internet Explorer 6.0

6 réponses

  1. Contributeur
    bonjour,
    a = ActiveCell.Offset(0, -1).Value
    1
    1. Contributeur
      Bonjour.

      De quel logiciel s'agit-il ?

      Quel que soit le logiciel, il n'existe aucune formule ou fonction qui fasse ça.
      Il faudrait avoir recours à une macro.
      0
      1. Contributeur
        Bonjour tout le monde,

        Si si, c'est faisable par formule.
        Ramène la valeur de l'avant dernière cellule remplie de la ligne 1 :
        =DECALER(A1;0;GRANDE.VALEUR((1:1<>"")*COLONNE(1:1);2)-1)
        formule matricielle à valider par shift+ctrl+entrée (le curseur étant dans la zone d'édition des formules)
        eric
        0
        1. Ah oui désolé j'avais oublié de spécifier que je codais en en VBA.
          Pour tout expliquer voici ce que je voudrais faire:

          J'ai un enchainement de ligne qui ne comportent pas forcement le meme nombre de valeurs, ce que je cherche a faire c'est que quand je clique sur la première cellule non vide d'une ligne (exemple C6) le programme aille chercher la valeur de l'avant dernière cellule non vide de cette ligne (exemple C14), qu'il fasse C6-C14 (nous nommerons cette soustraction x) , qu'il divise x par le nombre de cellules entre C6 et C14 (=y) et qu'ensuite il fasse:
          C7 = C6- y
          C8 = C7-y
          C9 = C8-y et ainsi de suite jusqu'a C14
          Bien sur j'ai utilisé un exemple mais je cherche a ecrire un programme général qui s'appliquerait a n'importe quelle ligne et de n'importe quelle taille.

          Private Sub CommandButton2_Click()
          Dim a, b, c, d As Integer

          Voici ce que j'ai commencé a écrire:

          Dim a b c d as Integer

          ActiveCell.Select
          Range(Selection, Selection.End(xlToRight)).Select

          a = Selection.Cells.Count - 1
          b = ActiveCell.Value
          c = ? (valeur de l'avant dernière cellule non vide)

          d = (b - c)/a ....

          Merci d'avance à ceux qui pourront m'aider !
          0
          1. Modérateur
            Bonjour,
            Un petit lien d'abord pour tout ce qui concerne dernière ligne, dernière colonne, nombre de colonnes, de lignes etc... : https://excel.developpez.com/faq/?page=Cellule#DerniereLigneNonVide
            Pour avoir l'avant dernière, il faut utiliser effectivement offset(ligne, colonne)
            ActiveCell.Offset(-3, 2) "remonte" de 3 lignes et va 2 colonnes à droite de la cellule active
            ActiveCell.Offset(0, -1) concerne la cellule située juste à gauche de la cellule active.

            L'avant dernière cellule non vide de la 1ère ligne est donc :
            AvantDerniereColonne = Range("IV1").End(xlToLeft).Offset(0, -1).Column
            L'avant dernière cellule non vide de la 113ère ligne est donc :
            AvantDerniereColonne = Range("IV113").End(xlToLeft).Offset(0, -1).Column

            Petit détail également :
            ActiveCell est la cellule qui est sélectionnée. Inutile donc d'écrire dans le code ActiveCell.Select. Ligne de code inutile et donc à supprimer.
            0
            1. Merci a tous
              Le programme tourne !
              0