Comment puis-je déterminer la dernière ligne d'une feuille Excel, y compris des lignes vides au milieu?
Avec cette fonction:
Function ultimaFilaBlanco(col As String) As Long
Dim lastRow As Long
With ActiveSheet
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row
End With
ultimaFilaBlanco = lastRow
End Function
Et ces données:
Row 1 : Value
Row 2 : Value
Row 3 : Value
Row 4 : Value
Row 5 : Value
Row 6 : White
Row 7 : Value
Row 8 : Value
Row 9 : Value
Row 10 : White
Row 11 : White
Row 12 : White
Row 13 : Value
Row 14 : White
La fonction retourne 5, et il me faut 13. Tu as une idée de comment faire?
Tu es vraiment proche. Essayez d’utiliser un grand numéro de ligne avec End(xlUp)
Function ultimaFilaBlanco(col As String) As Long
Dim lastRow As Long
With ActiveSheet
lastRow = ActiveSheet.Cells(1048576, col).End(xlUp).row
End With
ultimaFilaBlanco = lastRow
End Function
Le meilleur moyen d'obtenir le numéro de la dernière ligne utilisée est:
ActiveSheet.UsedRange.Rows.Count
Pour le feuille actuelle.
Worksheets("Sheet name").UsedRange.Rows.Count
pour un feuille spécifique.
Pour obtenir le numéro de la dernière colonne utilisée:
ActiveSheet.UsedRange.Columns.Count
Pour le feuille actuelle.
Worksheets("Sheet name").UsedRange.Columns.Count
pour un feuille spécifique.
J'espère que ça aide.
Abdo
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row -1
Court. Sûr. Vite. Renverra la dernière ligne non vide, même s'il y a des lignes vides en haut de la feuille ou ailleurs. Fonctionne également pour une feuille vide (Excel signale 1 ligne utilisée sur une feuille vide afin que l'expression soit 1). Testé et fonctionnel sur Excel 2002 et Excel 2010.
J'utilise les éléments suivants:
lastrow = ActiveSheet.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
Il trouvera la dernière ligne d'une colonne spécifique. Si vous voulez la dernière ligne utilisée pour la colonne any, alors:
lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
LastRow = ActiveSheet.UsedRange.Rows.Count
Le problème est le "en tant que chaîne" dans votre fonction. Remplacez-le par "comme double" ou "aussi longtemps" pour le faire fonctionner. De cette façon, cela fonctionne même si la dernière ligne est plus grande que le "grand nombre" proposé dans la réponse acceptée.
Donc cela devrait marcher
Function ultimaFilaBlanco(col As double) As Long
Dim lastRow As Long
With ActiveSheet
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row
End With
ultimaFilaBlanco = lastRow
End Function
Si la feuille contient une zone inutilisée en haut, UsedRange.Rows.Count
n'est pas la ligne maximale.
C'est le numéro de ligne maximum correct.
maxrow = Sheets("..name..").UsedRange.Rows(Sheets("..name..").UsedRange.Rows.Count).Row
Bien en dehors de tous ceux mentionnés, il existe plusieurs autres moyens de trouver la dernière ligne ou colonne dans une feuille de calcul ou une plage spécifiée.
Function FindingLastRow(col As String) As Long
'PURPOSE: Various ways to find the last row in a column or a range
'ASSUMPTION: col is passed as column header name in string data type i.e. "B", "AZ" etc.
Dim wks As Worksheet
Dim lstRow As Long
Set wks = ThisWorkbook.Worksheets("Sheet1") 'Please change the sheet name
'Set wks = ActiveSheet 'or for your problem uncomment this line
'Method #1: By Finding Last used cell in the worksheet
lstRow = wks.Range("A1").SpecialCells(xlCellTypeLastCell).Row
'Method #2: Using Table Range
lstRow = wks.ListObjects("Table1").Range.Rows.Count
'Method #3 : Manual way of selecting last Row : Ctrl + Shift + End
lstRow = wks.Cells(wks.Rows.Count, col).End(xlUp).Row
'Method #4: By using UsedRange
wks.UsedRange 'Refresh UsedRange
lstRow = wks.UsedRange.Rows(wks.UsedRange.Rows.Count).Row
'Method #5: Using Named Range
lstRow = wks.Range("MyNamedRange").Rows.Count
'Method #6: Ctrl + Shift + Down (Range should be the first cell in data set)
lstRow = wks.Range("A1").CurrentRegion.Rows.Count
'Method #7: Using Range.Find method
lstRow = wks.Column(col).Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
FindingLastRow = lstRow
End Function
Note: Veuillez utiliser une seule des méthodes ci-dessus, car elle justifie votre énoncé de problème.
Faites attention au fait que la méthode Find ne voit pas le formatage de cellule mais uniquement des données, par conséquent, recherchez xlCellTypeLastCell si seules les données sont importantes et non le formatage. En outre, les cellules fusionnées (ce qui doit être évité) peuvent vous donner des résultats inattendus car elles vous donneront le numéro de ligne de la première cellule et non la dernière cellule. dans les cellules fusionnées.
ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.count).row
ActiveSheet peut être remplacé par WorkSheets(1)
ou WorkSheets("name here")