|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Comment connaître les numéros des dernière ligne et dernière colonne renseignées d'une plage de données.
Récapitulatif de diverses méthodes possibles : UsedRange - 1 Donne le nombre de lignes renseignées de la feuille où qu'elle soient Si les lignes 1 à 10 et 17 à 19 sont vides, mais que les lignes 11 à 16 et 20 à 24 sont renseignées, donne 11 (6 + 5) Code :
NbLignes = ActiveSheet.UsedRange.Rows.Count Donne la première ligne renseignée de la feuille Code :
LaPremièreLigne = ActiveSheet.UsedRange.Row Donne la dernière ligne de la Plage S'il n'y a pas de ligne vide dans la plage de données, que la cellule "Cel" se trouve dans la plage de données, donne la dernière ligne de la plage de données, non de la feuille Code :
DerniereLigne = Range(Cel).CurrentRegion.End(xlDown).Row Donne l'adresse de la plage S'il n'y a pas de ligne vide dans la plage de données, si la cellule "Cel" se trouve dans la plage de données, donne la plage de données. Ex : Cel = "A15" où "$A$15" et se trouve donc dans la plage A4:N25 Code :
Plage = Range("A15").CurrentRegion.Address(False, False) 'Ex : "A4:N25"
Donne la dernière ligne de la feuille pour la colonne Pour connaître la dernière ligne absolue renseignée de la colonne A Code :
DerniereLigne = Range("A65536").End(xlUp).Row Donne la dernière ligne de la feuille pour la colonne Pour connaître la dernière ligne absolue renseignée de la colonne A Code :
DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row Si la colonne A n'est pas vide, donne la dernière ligne de la plage de cellules pour la colonne A Pour connaître la dernière ligne de la plage de cellules renseignées commençant range("A1") Code :
DerniereLigne = Range("A1").End(xlDown).Row Donne la dernière ligne d'une plage de cellules renseignées à partir de la ligne NoLigne, colonne Col Pour connaître la dernière ligne de la plage renseignée, colonne C, commençant NoLigne = 15 Code :
DerniereLigne = Range("C" & NoLigne).End(xlDown).Row S'il existe ou non des lignes vides dans dans la feuille, donne la dernière ligne absolue de la feuille Attention : Si des lignes sont supprimées dans la plage, enregistrer le fichier pour avoir le réel N° de la dernière ligne (idem pour les colonnes supprimées) Code :
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row Donne l'adresse absolue de la dernière cellule renseignée de la feuille Code :
AdresseAbsolue = Range("A1").SpecialCells(xlCellTypeLastCell).address Pour les colonnes C'est pareil… mais pour les colonnes (!) Code :
Toutes les combinaisons sont possibles. Exemple : Code :
Code :
Code :
Plage = Range("A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address).Address Code :
Range("A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address).select |
||||||
|
|
30
|
|
|
#2 | ||||||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Une autre façon de compter :
Code :
Code :
Code :
|
||||||
|
|
30
|
|
|
#3 | ||||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Question récurrente : Que veut dire la ligne suivante
Code :
DerLig = Split(Range("I5").CurrentRegion.Address, "$")(4) CurrentRegion.address fournit l'adresse absolue de la plage de données cohérente (sans ligne ni colonne entièrement vide) sous la forme Première colonne de la plage & Première Ligne & ":" & dernière colonne de la plage & dernière ligne de la plage. Ex "$I$5:$AX$2512" Split convertit un string en tableau en utilisant un séparateur de "mots" Si on utilise "$" comme séparateur on obtient un tableau d'indices 0 à 4 où Code :
Attention : Si une ou plusieurs cellules renseignées de la ligne 4 sont mitoyennes de cellules renseignées de la ligne 5, CurrentRegion l'inclura dans la plage. Si on utilise ":" comme séparateur, on obtient un tableau d'indices 0 à 1 Ex "$I$5:$AX$2512" Code :
Enfin, si l'on souhaite obtenir la dernière ligne absolue de la plage de donnée : Code :
DerLig = Split(Worksheets("feuil1").UsedRange.Address, "$")(4) Attention, si la feuille est totalement vide, les deux derniers codes génèrent une erreur. Explication : Adresse = Worksheets("feuille1").UsedRange.Address '=> "$A$1" Tablo = Split(Worksheets("feuille1").UsedRange.Address, "$") Ubound(Tablo) '=> 2 Tablo(4) n'existe donc pas Si le cas est envisageable, utiliser une autre syntaxe ou ajouter la condition : Code :
If Ubound(Split(Worksheets("feuille1").UsedRange.Address, "$")) = 4 then |
||||
|
|
30
|
|
|
#4 | |
|
Membre actif
![]() Inscription : mars 2007 Messages : 342 ![]() |
Citation:
![]() Si la feuille est enregistrée avec un filtre (filtre automatique ≠ tout) alors cette formule donne la dernière ligne de la feuille filtrée. |
|
|
|
00
|
|
|
#5 | |||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Je ne connaissais pas le problème et de toutes façons je n'utilise jamais cette syntaxe qui est la préférée de quelqu'un que je connais. Ma préférée à moi est
Citation:
Code :
|
|||
|
|
00
|
|
|
#6 | |
|
Office & Excel ![]() ![]() ![]() |
Ousk,
Pas d'accord avec cela Citation:
Si A1 est vide, renseigne la première cellule non vide en descendant. Si la colonne est vide, renvoie la dernière cellule de la colonne A65536 ou A1048576 Si A1 n'est pas vide, renvoie la cellule non vide qui précède la prochaine cellule vide en descendant. Si Tout est vide en dessous, renvoie A65536 ou A1048576
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
|
00
|
|
|
#7 | |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Ok, je corrige mais la citation complète présente d'ailleurs une contradiction puisque dans la ligne de code le -1 n'y est pas
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com