Voir le flux RSS

Pierre Fauconnier

VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille

Note : 2 votes pour une moyenne de 5,00.
par , 15/10/2019 à 09h00 (189 Affichages)
Salut.

On est souvent amené à rechercher la dernière ligne ou la dernière colonne utilisée d'une feuille Excel, bref la dernière cellule utilisée d'une feuille, car trouver la dernière cellule utilisée d'une feuille donnerait les deux informations. Voici une fonction à placer dans votre module xlTools (Vous avez bien un module xlTools, hein? ). Elle renvoie la dernière cellule réellement utilisée d'une feuille (celle qui, au moment de l'appel de la fonction, est la dernière "occupée" de la feuille). Si aucune cellule n'a encore été utilisée, la cellule A1 est renvoyée.

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Function getLastCell(sh As Worksheet) As Range
  Dim r As Long: r = 1
  Dim c As Long: c = 1
 
  If sh.Cells.SpecialCells(xlCellTypeLastCell).Address <> "$A$1" Then
    r = sh.Cells.Find(what:="*", after:=sh.Cells(1, 1), LookIn:=xlValues, lookat:=xlWhole, _
      searchorder:=xlByRows, searchdirection:=xlPrevious).Row
    c = sh.Cells.Find(what:="*", after:=sh.Cells(1, 1), LookIn:=xlValues, lookat:=xlWhole, _
      searchorder:=xlByRows, searchdirection:=xlPrevious).Column
  End If
  Set getLastCell = sh.Cells(r, c)
End Function


C'est vrai, il y a bien Cells.SpecialCells(xlCellTypeLastCell) qui est normalement prévu pour renvoyer la dernière cellule utilisée, mais cette technique souffre d'un problème qui peut être bloquant: SpecialCells(xlCellTypeLastCell) renvoie la dernière cellule utilisée depuis la dernière sauvergarde*. Certains prétendront alors qu'il suffit d'enregistrer le classeur avant d'utiliser ce code, mais on comprend vite qu'il n'est pas souhaitable d'enregistrer le classeur à la place de l'utilisateur juste pour cela.

* Si, sur une nouvelle feuille, vous saisissez une valeur par exemple en Z35, Cells.SpecialCells(xlCellTypeLastCell) renverra Z35 (en fait $Z$35). Videz la cellule et réutilisez le code => vous recevrez encore Z35. Même si vous supprimez des lignes et des colonnes englobant Z35, Cells.SpecialCells(xlCellTypeLastCell) continuera à vous renvoyer Z35. Têtu, Excel? Non, parfois bizarrement pensé par ces concepteurs, peut-être...

Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Viadeo Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Twitter Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Google Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Facebook Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Digg Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Delicious Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog MySpace Envoyer le billet « VBA Excel: Snippet pour trouver la dernière cellule utilisée d'une feuille » dans le blog Yahoo

Mis à jour 02/11/2019 à 17h15 par Pierre Fauconnier

Catégories
VBA , Excel , MS Office , Snippet

Commentaires