Bonjour,
Lorsque je travaillais avec les plages classiques, je n'ai jamais utilisé la propriété
End(xlDirection) de l'objet
Range mais plutôt
CurrentRegion bien plus simple à gérer. Il faut bien entendu pour cela avoir la première ligne et la première colonne remplies.
Ensuite pour sélectionner une partie de la plage ainsi définie, j'utilise les propriétés
Offset et
Resize
Depuis plusieurs années, je ne développe qu'avec des tableaux structurés bien plus simple à gérer aussi bien manuellement qu'avec le VBA
Donc si vous avez une plage "classique" avec une ligne de titre et une colonne sans ligne ou colonne vide et qui commence en cellule A1, voici quelques exemples avec la plage des données en illustration
La plage des données
Code:
1 2 3 4 5 6 7 8 9 10 11
| Sub Exemple_1()
' Sélection de la plage des données soit A2:J11
Dim rng As Range
Dim rngData As Range
Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
With rng
Set rngData = .Offset(RowOffset:=1).Resize(RowSize:=.Rows.Count - 1)
End With
MsgBox "Adresse = " & rngData.Address(External:=True)
Set rng = Nothing: Set rngData = Nothing
End Sub |
La première colonne
Code:
1 2 3 4 5 6 7 8 9 10 11
| Sub Exemple_2()
' Sélection de la plage des données soit A2:A11
Dim rng As Range
Dim rngData As Range
Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
With rng
Set rngData = .Offset(RowOffset:=1).Resize(RowSize:=.Rows.Count - 1, ColumnSize:=1)
End With
MsgBox "Adresse = " & rngData.Address(External:=True)
Set rng = Nothing: Set rngData = Nothing
End Sub |
La ligne de titre
Code:
1 2 3 4 5 6 7 8 9 10 11
| Sub Exemple_3()
' Sélection de la plage des données soit A1:J1 (ligne des titres
Dim rng As Range
Dim rngData As Range
Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
With rng
Set rngData = .Resize(RowSize:=1)
End With
MsgBox "Adresse = " & rngData.Address(External:=True)
Set rng = Nothing: Set rngData = Nothing
End Sub |
Illustration
Pièce jointe 640487