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
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
-- - -
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 ?
-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
-- - -
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 ?
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 ?
=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 ?
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
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
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
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
-- - -
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
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
-- - -
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
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 ...
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
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
Merci à tous....
Al
"Al" <Al@wanadoo.fr> a écrit dans le message de news:
4539d8e3$0$29092$426a74cc@news.free.fr...
Bonjour,
Comment avoir de manière simple une macro ou une fonction qui me renvoie
la dernière valeur d'une colonne ?