Selectionner l'avant dernière cellule
Résolu
Stefzy
-
Stefzy -
Stefzy -
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
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
A voir également:
- La première cellule de l’avant dernière colonne s’appelle :
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Déplacer colonne excel - Guide
- Supprimer dernière page word - Guide
- Trier colonne excel - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
6 réponses
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.
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.
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
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
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.