La recherche de la dernière ligne et colonne utilisée est l’une des tâches de base et importantes de toute automatisation dans Excel à l’aide de VBA. Pour compiler des feuilles, des classeurs et organiser automatiquement les données, vous devez trouver la limite des données sur les feuilles.

Cet article explique toutes les méthodes pour trouver la dernière ligne et la dernière colonne dans Excel de la manière la plus simple.

1. Trouvez la dernière ligne non vide dans une colonne en utilisant Range.End

Voyons d’abord le code. Je vais l’expliquer lettre.

Sub getLastUsedRow()

Dim last_row As Integer

last_row = Cells(Rows.Count, 1).End(xlUp).Row ‘This line gets the last row

Debug.Print last_row

End Sub

Le sous-dessus ci-dessus trouve la dernière ligne de la colonne 1.

image

Comment ça marche?

C’est comme aller à la dernière ligne de la feuille, puis appuyer sur le raccourci CTRL + UP.

Cellules (Rows.Count, 1): Cette partie sélectionne la cellule de la colonne A. Rows.Count donne 1048576, qui est généralement la dernière ligne de la feuille Excel.

Cells(1048576, 1)
End (xlUp): End est une méthode de classe de plage qui est utilisée pour naviguer dans les feuilles jusqu’aux extrémités. xlUp est la variable qui indique la direction.

Ensemble, cette commande sélectionne la dernière ligne contenant des données.

Cells(Rows.Count, 1).End(xlUp)
Row: row renvoie le numéro de ligne de la cellule sélectionnée. Par conséquent, nous obtenons le numéro de ligne de la dernière cellule avec les données de la colonne A. dans notre exemple, il est 8.

Voyez comme il est facile de trouver les dernières lignes avec des données. Cette méthode sélectionne la dernière ligne des données indépendamment des cellules vides qui la précèdent. Vous pouvez voir que dans l’image que seule la cellule A8 contient des données. Toutes les cellules précédentes sont vides sauf A4.

Sélectionnez la dernière cellule avec des données dans une colonne

Si vous voulez sélectionner la dernière cellule de la colonne A, supprimez simplement «.row» de la fin et écrivez .select.

Sub getLastUsedRow()

Cells(Rows.Count, 1).End(xlUp).Select ‘This line selects the last cell in a column

End Sub

La commande «.Select» sélectionne la cellule active.

Obtenir la colonne d’adresse de la dernière cellule

Si vous souhaitez obtenir l’adresse de la dernière cellule dans la colonne A, supprimez simplement « .row » de end et écrivez .address.

Sub getLastUsedRow()

add=Cells(Rows.Count, 1).End(xlUp).address ‘This line selects the last cell in a column

Debug.print add

End Sub

La fonction Range.Address * renvoie l’adresse de la cellule active.

Trouver la dernière colonne non vide d’une ligne

C’est presque la même chose que de trouver la dernière cellule non vide dans une colonne. Ici, nous obtenons le numéro de colonne de la dernière cellule avec les données de la ligne 4.

Sub getLastUsedCol()

Dim last_col As Integer

last_col = Cells(4,Columns.Count).End(xlToLeft).Column ‘This line gets the last column

Debug.Print last_col

End Sub

image

Vous pouvez voir dans l’image qu’il renvoie le numéro de colonne de la dernière cellule non vide de la ligne 4. Qui est 4.

Comment ça marche?

Eh bien, la mécanique est la même que la recherche de la dernière cellule avec des données dans une colonne.

Nous venons d’utiliser des mots-clés liés aux colonnes.

Sélectionnez l’ensemble de données dans Excel en utilisant VBA

Nous savons maintenant comment obtenir la dernière ligne et la dernière colonne d’Excel en utilisant VBA.

Grâce à cela, nous pouvons sélectionner facilement une table ou un ensemble de données. Après avoir sélectionné un jeu de données ou une table, nous pouvons effectuer plusieurs opérations sur eux, comme copier-coller, formater, supprimer, etc.

Ici, nous avons un ensemble de données. Ces données peuvent s’étendre vers le bas. Seule la cellule de départ est fixe, qui est B4. La dernière ligne et colonne n’est pas fixe. Nous devons sélectionner la table entière de manière dynamique en utilisant vba.

image

Code VBA pour sélectionner une table avec des cellules vides

Sub select_table()

Dim last_row, last_col As Long

'Get last row

last_row = Cells(Rows.Count, 2).End(xlUp).Row

'Get last column

last_col = Cells(4, Columns.Count).End(xlToLeft).Column

'Select entire table

Range(Cells(4, 2), Cells(last_row, last_col)).Select

End Sub

Lorsque vous exécutez cela, la table entière sera sélectionnée en une fraction de seconde. Vous pouvez ajouter de nouvelles lignes et colonnes. Il sélectionnera toujours toutes les données.

image

Avantages de cette méthode:

  1. C’est facile. Nous n’avons littéralement écrit qu’une seule ligne pour obtenir la dernière ligne avec des données.

Cela facilite les choses.

  1. Vite. Moins de lignes de code, moins de temps.

  2. Facile à comprendre.

  3. Fonctionne parfaitement si vous avez une table de données maladroite avec un point de départ fixe.

Inconvénients de la méthode Range.End:

  1. Le point de départ doit être connu.

  2. Vous ne pouvez obtenir que la dernière cellule non vide d’une ligne ou d’une colonne connue. Lorsque votre point de départ n’est pas fixé, il sera inutile. Ce qui est très peu probable.

2. Trouver la dernière ligne en utilisant la fonction Find ()

Voyons d’abord le code.

Sub last_row()

lastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row



Debug.Print lastRow

End Sub

image

Comme vous pouvez le voir dans l’image, ce code renvoie la dernière ligne avec précision.

Comment ça marche?

Ici, nous utilisons la fonction find pour trouver toute cellule contenant quelque chose en utilisant l’opérateur générique « * ». L’astérisque est utilisé pour trouver n’importe quoi, texte ou nombre.

We set search order by rows (searchorder:=xlByRows). We also tell excel vba the direction of search as xlPrevious (searchdirection:=xlPrevious). It makes find function to search from end of the sheet, row wise.

Once it find a cell that contains anything, it stops. We use the Range.Row method to fetch last row from active cell.

Avantages de la fonction Find pour obtenir la dernière cellule avec des données:

  1. Vous n’avez pas besoin de connaître le point de départ. Cela vous donne juste la dernière rangée. . Il peut être générique et peut être utilisé pour trouver la dernière cellule avec des données dans n’importe quelle feuille sans aucune modification.

  2. Peut être utilisé pour trouver toute dernière instance de texte ou de numéro spécifique sur la feuille.

Inconvénients de la fonction Find ():

  1. C’est moche. Trop d’arguments.

  2. C’est lent.

  3. Ne peut pas utiliser pour obtenir la dernière colonne non vide. Techniquement, vous pouvez. Mais ça devient trop lent.

3. Utilisation de la fonction SpecialCells pour obtenir la dernière ligne

La fonction SpecialCells avec l’argument xlCellTypeLastCell renvoie la dernière cellule utilisée. Voyons d’abord le code

Sub spl_last_row_()

lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Debug.Print lastRow

End Sub

image

Si vous exécutez le code ci-dessus, vous obtiendrez le numéro de ligne de la dernière cellule utilisée.

Comment ça marche?

C’est l’équivalent vba du raccourci CTRL + Fin dans Excel. Il sélectionne la dernière cellule utilisée. Si vous enregistrez la macro en appuyant sur CTRL + Fin, vous obtiendrez ce code.

Sub Macro1()

'

' Macro1 Macro

'

'

ActiveCell.SpecialCells(xlLastCell).Select

End Sub

Nous l’avons simplement utilisé pour obtenir le numéro de ligne de la dernière cellule utilisée.

Remarque: * Comme je l’ai dit ci-dessus, cette méthode renvoie la dernière cellule utilisée et non la dernière cellule avec des données. Si vous supprimez les données de la dernière cellule, le code vba ci-dessus renverra toujours la même référence de cellules, car il s’agissait de la «dernière cellule utilisée». Vous devez d’abord enregistrer le document pour obtenir la dernière cellule contenant des données à l’aide de cette méthode.

Articles liés:

link: / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel]

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016]

link: / menus-toolbars-status bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur la barre d’état Excel VBA]

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016]

Articles populaires:

link: / formulas-and-functions-introduction-of-vlookup-function [La fonction RECHERCHEV dans Excel]

lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016]

link: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel]