Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dernière valeur d'une colonne...

11 réponses
Avatar
Al
Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoie la
dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al

10 réponses

1 2
Avatar
Garette
Bonjour,

En VBA :
Sub DerniereCell()
MsgBox Range("A1").End(xlDown)
MsgBox Range("A65536").End(xlUp) 'S'il y a des cellules vides dans la
colonne A
End Sub

Dans la feuille de calcul (sans cellule vide dans la colonne A
ÞCALER(A1;NBVAL(A:A)-1;0)
Avatar
JB
Bonjour,

=INDEX(A1:A10;MAX((A1:A10<>0)*LIGNE(INDIRECT("1:"&LIGNES(A1:A10)))))

JB

Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoi e la
dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al


Avatar
Al
Merci pour ta réponse.
Mais la formule ci dessous me renvoie #VALEUR
Comment faire ?

Merci
Al

"JB" a écrit dans le message de news:

Bonjour,

=INDEX(A1:A10;MAX((A1:A10<>0)*LIGNE(INDIRECT("1:"&LIGNES(A1:A10)))))

JB

Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoie
la
dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al


Avatar
Jacky
Bonjour,
Comment faire ?
A défaut de JB.....


Formule matricielle
Valider par "ctrl+majuscule+entrée"
--
Salutations
JJ

"Al" a écrit dans le message de news:
453a054e$0$31666$
Merci pour ta réponse.
Mais la formule ci dessous me renvoie #VALEUR
Comment faire ?

Merci
Al

"JB" a écrit dans le message de news:

Bonjour,

=INDEX(A1:A10;MAX((A1:A10<>0)*LIGNE(INDIRECT("1:"&LIGNES(A1:A10)))))

JB

Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoie
la
dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al






Avatar
lSteph
Bonjour,

-Une macro:
Voici le code à mettre dans un module:
''''''******
Sub DerValColActive()
Dim maval, lastcell As Range
Set lastcell = Cells(65536, ActiveCell.Column)
If Not IsEmpty(lastcell.Value) Then
maval = lastcell
Else
maval = lastcell.End(xlUp).Value
End If
MsgBox maval
End Sub
''''''******

- Une fonction:
Entrer cette fonction ainsi,avec un numéro de colonne
Þrvalcol(1)
Voici le code à mettre d'abord dans un module:

''''''******
Function DerValCol(numcol As Byte)
Set lastcell = Cells(65536, numcol)
If Not IsEmpty(lastcell.Value) Then
DerValCol = lastcell
Else
DerValCol = lastcell.End(xlUp).Value
End If
End Function
''''''******

'lSteph

Al a présenté l'énoncé suivant :
Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoie la
dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al


--
- -

Avatar
Garette
Bonjour,

=INDEX(A1:A10;MAX((A1:A10<>0)*LIGNE(INDIRECT("1:"&LIGNES(A1:A10)))))
Pour qu'elle fonctionne avec du texte, il faut la valider par CTR+SHIFT+ENTRER

Je trouve que ÞCALER(A1;NBVAL(A:A)-1;0) reste plus simple ...
Ou bien il y a une astuce que je n'ai pas vu ?
Avatar
AV
Pour une colonne entière...

Les matricielles n'acceptent pas et sont très "lentes" pour ce type de
traitement....
La fonction DECALER a des difficultés avec les cellules vides....

Une fonction perso me semble être plus adaptée :
Dans un module ordinaire :

Function DER_VAL_COL(Colonne As Range)
nbLg = [A:A].Count
If Colonne.Rows.Count < nbLg Or Colonne.Columns.Count > 1 Then
DER_VAL_COL = "#ERR"
ElseIf Application.CountA(Colonne) > 0 Then
With Colonne(nbLg)
If IsEmpty(.Item(1)) Then DER_VAL_COL = .End(3) Else: Set
DER_VAL_COL = .Item(1)
End With
Else: DER_VAL_COL = ""
End If
End Function

Utilisation dans la feuille :
ÞR_VAL_COL(A:A)

AV
Avatar
lSteph
Bonjour,
Une fonction perso me semble être plus adaptée
Comme c'était demandé, j'ai cru bon de donner les deux,

une procèdure et une fonction mais ma préférence va aussi à la
fonction.

Ton avis éclairé conforte donc cette idée,

toutefois tu utilises un range et moi un numéro de colonne, or je me
demande ainsi, si l'on pourrait envisager un paramètre plus souple pour
l'utilisateur, à savoir qui puisse gèrer le paramètre selon toute
nature.(a:a ou a ou 1 ou a1)

Merci.

lSteph

AV a émis l'idée suivante :
Pour une colonne entière...

Les matricielles n'acceptent pas et sont très "lentes" pour ce type de
traitement....
La fonction DECALER a des difficultés avec les cellules vides....

Une fonction perso me semble être plus adaptée :
Dans un module ordinaire :

Function DER_VAL_COL(Colonne As Range)
nbLg = [A:A].Count
If Colonne.Rows.Count < nbLg Or Colonne.Columns.Count > 1 Then
DER_VAL_COL = "#ERR"
ElseIf Application.CountA(Colonne) > 0 Then
With Colonne(nbLg)
If IsEmpty(.Item(1)) Then DER_VAL_COL = .End(3) Else: Set
DER_VAL_COL = .Item(1)
End With
Else: DER_VAL_COL = ""
End If
End Function

Utilisation dans la feuille :
ÞR_VAL_COL(A:A)

AV


--
- -

Avatar
AV
Ave,

L'intérêt de passer par un range est, en utilisation classique, de n'avoir pas à
saisir l'argument de la fonction mais de pouvoir directement cliquer sur la
lettre ou le N° de colonne (selon le type de référence choisie dans
l'application).
Pourquoi pas aussi (comme ton exemple) passer par un index de colonne.
Par contre, "mélanger" en offrant les 2 possiblités de type d'argument ne me
semble pas apporter un "plus" mais une "lourdeur" supplémentaire du fait du
nombre de tests supplémentaires à faire ....
Mais bon... c'est un avis ...

AV
Avatar
Al
Merci à tous....
Al

"Al" a écrit dans le message de news:
4539d8e3$0$29092$
Bonjour,

Comment avoir de manière simple une macro ou une fonction qui me renvoie
la dernière valeur d'une colonne ?

Merci pour vos réponses à tous
Al



1 2