J’ai trouvé cette méthode pour trouver la dernière ligne contenant des données dans une feuille :
ws.Range("A65536").End(xlUp).row
Existe-t-il une méthode similaire pour trouver la dernière colonne contenant des données dans une feuille ?
Merci.
Il existe de nombreuses façons de procéder. La plus fiable est de 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
En utilisant la plage 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 pas de données dans la colonne A. Voir ici pour un autre problème avec la plage utilisée :
Voir [Ici][1] concernant la réinitialisation de la plage utilisée.
[1] : https://stackoverflow.com/questions/7423022/excel-getting-the-actual-usedrange/7423252#7423252
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 l'information xlCellTypeLastCell
ne sera pas mise à jour à moins que l'on fasse une action "Save file" ;. Mais l'utilisation de UsedRange
mettra toujours à jour les informations en temps réel.
Je pense que nous pouvons modifier le code UsedRange
de la réponse 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é en
ce lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
donnera toujours des résultats fiables.
[ ![entrez la description de l'image ici][1]][1]
?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1
Ligne ci-dessus Donne 9
dans la fenêtre immédiate.