dernière cellule non vide d'une colonne

J

jd

Guest
bonjour le forum et les forumistes,

Ma recherche relève presque d'un cas d'école, mais comment obtient on la ligne de la dernière cellule non vide de la colonne 'AA'. Ce serais gentil de me donner un coup de main, merci.

jd
 
M

mcpoy

Guest
bonjour JD, voici un petit texte qui te sera très utile.
bonne journée A+.


Comment trouver la dernière cellule ?

Deux bonnes raisons de rechercher la dernière cellule :
- quand un classeur Excel occupe une place démesurée
- en VBA, pour ajouter une ligne en bas d'un tableau, ou pour sélectionner et mettre en forme la plage utile...
Dans la page Excel, il suffit de faire : Edition / atteindre / cellules / Dernière cellule.
Excel sélectionne la dernière cellule occupée.
Surprise parfois, il arrive que cette cellule soit vide !
Pour peu que la cellule soit assez loin de $A$1, le fichier risque de devenir énorme, Excel enregistrant chaque cellule de la zone utile (même si les cellules sont "vides").
Explication, soit la cellule contient une "chaîne vide" (un texte sans aucun caractère), soit la cellule a été formatée.
Solution, sélectionner les lignes et colonnes vides et les supprimer.
En VBA, la commande correspondant à "Edition / atteindre / cellules / Dernière cellule" est :
Cells.SpecialCells(xlCellTypeLastCell).Select
Avec évidemment l'inconvénient précédent des cellules "vides".
Si on veut utiliser le numéro de la dernière ligne, il suffit d'écrire :
Cells.SpecialCells(xlCellTypeLastCell).Row
Autre solution (avec le même inconvénient), l'utilisation de UsedRange (la plage utilisée) :
Si on est sûr que la première ligne est occupée, le numéro de la dernière ligne sera :
ActiveSheet.UsedRange.Rows.Count (nombre de lignes de la plage utile).
Si la première ligne risque d'être vide, on peut écrire :
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
Ou bien, on peut utiliser End(xlDown) (ou xlUp ou xlRight ou xlLeft), commande correspondant à CTRL + flèche vers le bas (haut, droite, gauche), pour aller au bout de la plage.
Si par exemple toutes les cellules de la colonne A sont utilisées jusqu'en bas de la zone utile, on peut placer le curseur en A1 et taper CTRL+flèche vers le bas pour atteindre la dernière cellule de la colonne A.
Inconvénent, ne marche pas si il y a des cellules vides entre A1 et la dernière cellule.
Solution, partir du bas : Cells(65536, 2).End(xlUp).Select sélectionne la dernière cellule occupée de la colonne B.
Et si on n'est pas bien sûr que notre feuille a 65536 lignes :
Cells(Rows.Count, 2).End(xlUp).Select (toujours dans la colonne B).
Enfin, en VBA, la formule la plus élégante, et la plus efficace :
Columns(C:C).Find("*", [C1], , , , xlPrevious).Select va séléctionner la dernière cellule (réellement) non vide de la colonne C.
Elle utilise la fonction de recherche Find.
Dans la colonne C, on recherche la chaîne de caractères "*", c'est à n'importe quelle chaîne de caractères (* est un caractère joker qui peut représenter n'importe quel caractère ou groupe de caractères).
Et on recherche cette chaîne à partir de C1, première cellule de la colonne, en partant vers le haut (xlPrevious). Excel, à défaut de pouvoir chercher plus haut que C1, va balayer toutes les cellules à partir de C65536 en allant vers le haut, et donc trouver la dernière cellule occupée de la colonne.
On peut même se passer de la cellule de départ, Excel partant par défaut de la première :
Columns(3).Find("*", , , , , xlPrevious).Select (ne pas oublier les 5 virgules !).
Rows(2).Find("*", , , , , xlPrevious).Column donnera de même le numéro de colonne de la dernière cellule de la deuxième ligne,
Cells.Find("*", , , , , xlPrevious).Row le numéro de la dernière ligne non vide.
et Cells.Find("*", , , , xlByColumns, xlPrevious).Column le numéro de la dernière colonne non vide.
 
J

jd

Guest
Re bonjour à toutes et à tous,

Je te remercie mcpoy pour le Tuto de la dernière cellule. Il me sera d'une aide très précieuse, il gardera une place privilégié ds mes documents d'aide.

Bonne fin de journée et bonne soirée.

jd
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 393
Membres
103 537
dernier inscrit
alisafred974