Détermination de la dernière ligne REELLE d'une colonne Excel

0/5 (2 avis)

Snippet vu 12 848 fois - Téléchargée 12 fois

Contenu du snippet

Le but de ce code :
Déterminer la dernière ligne remplie, masquée ou non, d'une colonne, quel que soit le nombre de plages masquées ou de lignes vides présentes.

Code de la fonction :
Private Function derlig_reelle(plage As Range) As Long
   'cas d'absence de données dans la plage à traiter :
   If WorksheetFunction.CountA(plage) = 0 Then derlig_reelle = plage.Cells(1, 1).Row: Exit Function
   'dans tous les autres cas :
   derlig_reelle = plage.Find("*", , , , , xlPrevious).Row
End Function


Avec ce code, vous pourrez déterminer, non seulement la dernière ligne réelle d'une colonne, qu'elle que soit la configuration de vos données (lignes vides et/ou masquées), mais également d'une plage de cellules ou même d'une feuille entière.
Ce code est fonctionnel même en cas d'insertion ou de suppression de lignes, contrairement à la méthode SpecialCells (Cells.SpecialCells(xlCellTypeLastCell) qui nécessite une sauvegarde du classeur dans ces cas.

Exemples d'utilisation :
'Dernière ligne réelle d'une colonne :
MsgBox derlig_reelle(Worksheets("Feuil1").Columns(1))
MsgBox derlig_reelle(Worksheets("Feuil1").Columns("A"))
MsgBox derlig_reelle(Worksheets("Feuil2").Range("B:B"))
'Dernière ligne réelle d'une plage de cellules (fonctionne même si la dernière ligne est située en colonne C)
MsgBox derlig_reelle(Worksheets("Feuil1").Range("A10:G153"))
'Dernière ligne réelle d'une feuille
MsgBox derlig_reelle(Sheets("Feuil3").Cells)

A voir également

Ajouter un commentaire Commentaires
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
16 sept. 2016 à 12:10
Bonjour,

Il faut faire attention avec UsedRange, la plage ne commence pas obligatoirement à la première ligne.
With Worksheets(1).UsedRange
  derlig = .Rows.Count + .Row - 1
End With
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
10 mai 2016 à 10:26
Salut,

dans le dernier excel, il détecte automatiquement la dernière cellule utilisée dès que tu enregistres, il 'annule' l'activité de toutes les cellules inutiles après).

Il suffit alors de faire worksheet.usedrange, pour avoir le dernier objet range actif.
tu utilises ensuite .rows, etc, pour utiliser ce dont tu as besoin.

Cdt

Oma

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.