Sélectionner 1ère cellule vide dans 1ère ligne

Macpoy

XLDnaute Impliqué
Re : Sélectionner 1ère cellule vide dans 1ère ligne

Bonsoir le forum, Hyperion


bonne lecture @plus


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.
 

Macpoy

XLDnaute Impliqué
Re : Sélectionner 1ère cellule vide dans 1ère ligne

bonsoir le forum, carcharodon-carcharias
effectivement il n'y à pas de texte dans ce post, mais pour une fois le titre me semblai explicite.
on aurait pus lui mettre le lien vers la charte, certes mais bon !!
bonne soirée
 

jeanpierre

Nous a quitté
Repose en paix
Re : Sélectionner 1ère cellule vide dans 1ère ligne

Bonsoir hyperion13, et Bienvenue (à condition que tu ne supprimes pas tes messages car on n'y comprend plus rien), Jacques et Jean-Pierre (CC),

Bon, ben....

Jean-Pierre (en repos sur ce coup)
 

hbenalia

XLDnaute Occasionnel
Re : Sélectionner 1ère cellule vide dans 1ère ligne

Bonjour le forum,

Un essai avec le code suivant:

Code:
Sub TEST()
Range("A1").Select
On Error Resume Next
Cells(1, Selection.End(xlToRight).Column + 1).Select
End Sub

Cordialement
 

Discussions similaires

Réponses
7
Affichages
294

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87