Microsoft Office Tutorials and References
In Depth Information
DERNIERE = Cells(1048576, Colonne).Address
ElseIf Cells(1048576, Colonne).End(xlUp).Value
<>
""
✂ Then
DERNIERE = Cells(1048576, Colonne).End(xlUp).Address
End If
Colonne = Colonne - 1
Loop Until (DERNIERE
<>
"")
End Function
Il s’agit de « balayer » l’ensemble des colonnes de la feuille active,
en commençant par la dernière (16384). Dans chaque colonne,
vous recherchez la dernière cellule non vide à partir du bas. Si la
cellule de la ligne 1048576 n’est pas vide, c’est forcément elle ;
vous prenez alors son adresse. En revanche si elle est vide, la
séquence Cells(1048576, Colonne).End(xlUp) permet de simuler
la combinaison de touches [Ctrl] + [ÿ] , qui a pour effet d’activer la
première cellule non vide située au-dessus. Si aucune cellule n’est
remplie, vous vous retrouvez sur la cellule située sur la ligne 1, qui
sera vide, d’où le second test. Une fois que DERNIERE contient une
valeur, il faut arrêter le balayage ( Loop Until DERNIERE <> "" ).
Variante
Quelles que soient les modifications effectuées dans la feuille de
calcul, la cellule contenant =DERNIERE() ne sera pas recalculée et le
résultat affiché sera obsolète. Deux solutions sont possibles. La
première consiste à utiliser la combinaison de touches
[Ctrl] + [Alt] + [F9] afin de recalculer toutes les fonctions personnalisées.
L’autre solution consiste à ajouter Application.Volatile True
juste avant la première ligne de code. Cela aura pour effet de
recalculer la fonction à chaque modification de la feuille de calcul.
La fonction devient alors :
Function DERNIERE()
Application.Volatile True
DERNIERE = ""
Colonne = 16384
Do
If Cells(1048576, Colonne).Value <> "" Then
DERNIERE = Cells(1048576, Colonne).Address
ElseIf Cells(1048576, Colonne).End(xlUp).Value
<>
""
✂ Then
DERNIERE = Cells(1048576, Colonne).End(xlUp).Address
End If
Search JabSto ::




Custom Search