C'est une requête à laquelle je suis vraiment confus. Coz j'ai cherché cela tellement de fois, mais je trouve toujours les codes liés à la recherche de la dernière cellule utilisée ou de la première cellule non vide utilisée . les codes diff ont été séparés par le mot "même"
iRow = Worksheets("Sheet1").Cells(Rows.Count,1).End(XlUp).Row
même
Sub LastCellBeforeBlankInColumn()
Range("A1").End(xldown).Select
End Sub
même
Trouver la dernière cellule utilisée dans une colonne:
Sub LastCellInColumn()
Range("A65536").End(xlup).Select
End Sub
même
Recherchez la dernière cellule avant un blanc d'affilée:
Sub LastCellBeforeBlankInRow()
Range("A1").End(xlToRight).Select
End Sub
même
Trouvez la dernière cellule utilisée dans une rangée:
Sub LastCellInRow()
Range("IV1").End(xlToLeft).Select
End Sub
même
Worksheets("Sheet1").Range("A1").End(xlDown).Row + 1
même
LastRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("SheetName").Range("A" & LastRow).Paste
même
Dim FirstBlankCell as Range
Set FirstBlankCell=Range("A" & rows.Count).end(xlup).offset(1,0)
FirstBlankCell.Activate
'Find the last used row in a Column: column A in this example
Dim LastRow As Long
Dim NextRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
End With
NextRow = LastRow + 1
Si tout ce que vous essayez de faire est de sélectionner la première cellule vide dans une colonne donnée, vous pouvez l'essayer:
Code:
Public Sub SelectFirstBlankCell()
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String
sourceCol = 6 'column F has a value of 6
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
'for every row, find the first blank cell and select it
For currentRow = 1 To rowCount
currentRowValue = Cells(currentRow, sourceCol).Value
If IsEmpty(currentRowValue) Or currentRowValue = "" Then
Cells(currentRow, sourceCol).Select
End If
Next
End Sub
Avant sélection - première cellule vierge à sélectionner:
Après sélection:
Au cas où quelqu'un tomberait sur ce que je viens d'avoir ...
Rechercher la première cellule vide dans une colonne (j'utilise la colonne D mais je ne souhaite pas inclure D1)
NextFree = Range("D2:D" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
Range("D" & NextFree).Select
NextFree est juste un nom, vous pouvez utiliser des saucisses si vous le souhaitez.
Si tout ce que vous essayez de faire est de sélectionner la première cellule vide dans une colonne donnée, vous pouvez l'essayer:
Range("A1").End(xlDown).Offset(1, 0).Select
Si vous l'utilisez par rapport à une colonne que vous avez sélectionnée, cela fonctionne:
Selection.End(xlDown).Offset(1, 0).Select
Le code de Sam est bon mais je pense qu’il a besoin d’une correction,
Public Sub SelectFirstBlankCell()
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String
sourceCol = 6 'column F has a value of 6
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
'for every row, find the first blank cell and select it
For currentRow = 1 To rowCount
currentRowValue = Cells(currentRow, sourceCol).Value
If IsEmpty(currentRowValue) Or currentRowValue = "" Then
Cells(currentRow, sourceCol).Select
Exit For 'This is missing...
End If
Next
End Sub
Merci
Si vous recherchez une ligne (sans les désignations et les commentaires), essayez ceci.
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Name")
'find first empty cell in column F (coming up from the bottom) and return row number
iRow = ws.Range("F:F").Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
J'ai adapté un peu le code de tout le monde, l'ai intégré à une fonction, l'a accéléré (tableau) et ajouté des paramètres:
Public Function FirstBlankCell(Optional Sh As Worksheet, Optional SourceCol As Long = 1, Optional ByVal StartRow& = 1, Optional ByVal SelectCell As Boolean = False) As Long
Dim RowCount As Long, CurrentRow As Long
Dim CurrentRowValue As String
Dim Data()
If Sh Is Nothing Then Set Sh = ActiveSheet
With Sh
rowCount = .Cells(.Rows.Count, SourceCol).End(xlUp).Row
Data = .Range(.Cells(1, SourceCol), .Cells(rowCount, SourceCol)).Value2
For currentRow = StartRow To RowCount
If Data(currentRow, SourceCol) = vbNullString Then
If SelectCell Then .Cells(currentRow, SourceCol).Select
'if selection is out of screen, intead of .select , use : application.goto reference:=.cells(...), scroll:= true
FirstBlankCell = currentRow
Exit For
End If
Next
End With ' Sh
Erase Data
Set Sh = Nothing
End Function
C'est un moyen très rapide et propre de le faire. Il prend également en charge les colonnes vides où aucune des réponses ci-dessus ne fonctionne pour les colonnes vides.
Usage: SelectFirstBlankCell("F")
Public Sub SelectFirstBlankCell(col As String)
Dim i As Integer
Dim NextCell As Integer
For i = 1 To 10000
If Range(col & CStr(i)).Value = "" Then
NextCell = i
Exit For
End If
Next i
Range(col & CStr(i)).Select
End Sub
Public Sub SelectFirstBlankCell()
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String
sourceCol = 6 'column F has a value of 6
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
'for every row, find the first blank cell and select it
For currentRow = 1 To rowCount
currentRowValue = Cells(currentRow, sourceCol).Value
If IsEmpty(currentRowValue) Or currentRowValue = "" Then
Cells(currentRow, sourceCol).Select
End If
Next
End Sub
Si une colonne contient plusieurs cellules vides en continu, ce code ne fonctionnera pas correctement
Je pense qu'une boucle Do Until
- est plus propre, plus courte et plus appropriée ici:
Public Sub SelectFirstBlankCell(col As String)
Dim Column_Index as Integer
Dim Row_Counter as
Column_Index = Range(col & 1).Column
Row_Counter = 1
Do Until IsEmpty(Cells(Row_Counter, 1))
Row_Counter = Row_Counter + 1
Loop
Cells(Row_Counter, Column_Index).Select