Tout d'abord, il faut savoir ou le tableau commence. En l'occurence, il commence en C2, pas en A1. Pour sélectionner le tableau, on écrit :
ActiveSheet.UsedRange.Select
Ce qui aura pour effet de sélectionner C2:E7. Attention : UsedRange prend en compte TOUTES les cellules utilisées. Le tableau suivant :
va poser problème. En effet
ActiveSheet.UsedRange.Select
Va sélectionner B2:F20. Vous avez compris la nuance ? Pour pouvoir sélectionner le premier tableau dans ce cas-ci, on aurait recours à CurrentRegion, mais il faut connaître au moins une cellule faisant partie du tableau.
ActiveSheet.Range("E12").CurrentRegion.Select
Sélectionnerait D10:F14. Selon la cellule spécifiée, le CurrentRegion sélectionne tel ou tel tableau de la feuille.
Pour le bien-être de la démonstration, nous allons admettre que notre feuille active ne contient que le tableau décrit au début de la page, ce qui nous permettre d'utiliser UsedRange en toute quiétude.
Toutes les sélections commencent avec ActiveSheet.UsedRange, c'est pourquoi je les ai mises en petit.
Sélection de tout le tableau (C2:E7):
ActiveSheet.UsedRange.Select
Tout le tableau sauf la ligne de titre (C3:E7). Tout l'astuce consiste à commencer à la ligne 2 du tableau (Ligne3 en fait), jusqu'au nombre de Lignes (Rows.Count):
ActiveSheet.UsedRange.Rows("2:" & ActiveSheet.UsedRange.Rows.Count).Select
Ligne de titre (C2:E2). On sélectionne simplement la première ligne de notre UsedRange ::
ActiveSheet.UsedRange.Rows(1).Select
Ligne de titre complète (Ligne 2) La propriété EntireRow permet ce tour de force ::
ActiveSheet.UsedRange.Rows(1).EntireRow.Select
Toutes les lignes complètes composant le tableau (Ligne 2 jusqu'à la ligne 7):
ActiveSheet.UsedRange.EntireRow.Select
Toutes les colonnes complètes composant le tableau (Colonne C jusqu'à la E). EntireColumn est le pendant de EntireRow, on l'aura compris :
ActiveSheet.UsedRange.EntireColumn.Select
Toutes les lignes complètes composant le tableau, sauf la ligne de titre (Ligne 3 jusqu'à la ligne 7). Voir la sélection de tout le tableau sauf la première ligne.
ActiveSheet.UsedRange.Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select
La première colonne complète (Colonne C). On prend l'EntireColumn de la première cellule en haut à gauche de notre UsedRange.
ActiveSheet.UsedRange.Cells(1, 1).EntireColumn.Select
La dernière colonne complète (Colonne E). Même chose, mais on prend la cellule tout en haut de la colonne N° Columns.Count
ActiveSheet.UsedRange.Cells(1, ActiveSheet.UsedRange.Columns.Count).EntireColumn.Select
Dernière ligne : Pas toute la ligne, mais uniquement C7:E7 (dans la limite du UsedRange donc)
ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Select
Dernière ligne complète. Cette fois grace à EntireRow, on peut sélectionner toute la ligne 7
ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).EntireRow.Select
Nouvelle ligne : (C8:E8) C'est comme la sélection de la dernière ligne, mais on ajoute + 1
ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count + 1).Select
Nouvelle ligne complète : Idem, mais avec EntireRow (Ligne 8)
ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count + 1).EntireRow.Select
Cellule en haut à gauche : (C2)
ActiveSheet.UsedRange.Cells(1, 1).Select
Cellule en haut à droite : (E2) Encore une histoire du Columns.Count
ActiveSheet.UsedRange.Cells(1, ActiveSheet.UsedRange.Columns.Count).Select
Cellule en Bas à gauche (Dernier nom : C7): Cette fois, c'est le comptage des lignes avec Rows.Count
ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count, 1).Select
Cellule en bas à droite (Dernière ville : E7) : Combinaison possible de Rows et Columns.Count. Ne vous laissez pas troubler par l'apparente complexité du Cells().
ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count).Select
Premier nom (Colonne de gauche): (C3). Cells(2,1) = Cells(Ligne, Colonne). Il s'agit bien de la 2ème ligne du UsedRange, et pas de la feuille complète, ce qui explique pourquoi nous sommes sur la ligne 3 et pas la 2.
ActiveSheet.UsedRange.Cells(2, 1).Select
Premier prénom : Même principe, mais le 2ème 2 signifie 2ème colonne, toujours du UsedRange, donc.
ActiveSheet.UsedRange.Cells(2, 2).Select
Première Ville (première valeur de la dernière colonne). 2ème ligne, on a compris, et "Columns.Countième" colonne.
ActiveSheet.UsedRange.Cells(2, ActiveSheet.UsedRange.Columns.Count).Select
Cellule une ligne plus bas, colonne la plus a gauche (Nouveau nom : C8) : Cette fois, c'est le nombre de lignes + 1 qui nous intéresse.
ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).Select
Cellule une ligne plus bas, colonne la plus a droite (Nouvelle ville : E8) : Le nombre de colonnes et le nombre de lignes + 1 nous intéresse.
ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count + 1, ActiveSheet.UsedRange.Columns.Count).Select
Nouveau prénom (juste en dessous du dernier prénom - 2ème colonne : D8). Le ",2" considère la combientième colonne nous intéresse. Si on avait mis ",18", il aurait sélectionné la 18ème colonne de notre UsedRange, et malgré que la 18ème colonne est bien trop à droite, il l'aurait quand même sélectionnée sans faire d'erreur.
ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count + 1, 2).Select
A vous d'expérimenter maintenant !
Vous pourriez, à titre d'exercice, essayer de sélectionner tout le tableau sauf la denière colonne, ou tout le tableau sauf la première ni la dernière ligne, ou que la 4ème ligne...
---