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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 903 fois - Téléchargée 10 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

cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016
-
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
Patrice33740
Messages postés
7791
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
10 août 2019
16 > cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016
-
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

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.