J'ai trouvé cette méthode pour trouver les dernières données contenant une ligne dans une feuille:
ws.Range("A65536").End(xlUp).row
Existe-t-il une méthode similaire pour rechercher la dernière donnée contenant une colonne dans une feuille?
Merci.
Beaucoup de façons de le faire. Le plus fiable est trouver.
Dim rLastCell As Range
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
MsgBox ("The last used column is: " & rLastCell.Column)
Si vous voulez trouver la dernière colonne utilisée dans une ligne particulière, vous pouvez utiliser:
Dim lColumn As Long
lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
Utilisation de la gamme utilisée (moins fiable):
Dim lColumn As Long
lColumn = ws.UsedRange.Columns.Count
L'utilisation de la plage utilisée ne fonctionnera pas si vous n'avez aucune donnée dans la colonne A. Vous trouverez ci-après un autre problème avec la plage utilisée:
Voir Ici concernant la réinitialisation de la plage utilisée.
Je sais que c'est vieux, mais j'ai testé cela de nombreuses façons et cela ne m'a pas encore laissé tomber, à moins que quelqu'un ne puisse me dire le contraire.
Numéro de ligne
Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Lettre de colonne
ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)
Numéro de colonne
ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Je pense que nous pouvons modifier le code UsedRange
de @ Readify's ci-dessus pour obtenir la dernière colonne utilisée, même si les colonnes de départ sont vides ou non.
Donc, ce lColumn = ws.UsedRange.Columns.Count
modifié pour
ce lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
donnera toujours des résultats fiables
?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1
Au-dessus de la ligne, on obtient 9
dans la fenêtre immédiate.
Essayez d’utiliser le code après avoir activé la feuille:
Dim J as integer
J = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Si vous utilisez uniquement Cells.SpecialCells(xlCellTypeLastCell).Row
, le problème sera que les informations xlCellTypeLastCell
ne seront pas mises à jour à moins que vous ne fassiez une action "Enregistrer le fichier". Mais utiliser UsedRange
mettra toujours à jour les informations en temps réel.
Voici quelque chose qui pourrait être utile. En sélectionnant la colonne entière en fonction d'une ligne contenant des données, dans ce cas, j'utilise la 5ème ligne:
Dim lColumn As Long
lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)