Tester si une plage est vide
Bonjour à tous,
J'aimerais tester dans la colonne A, si la plage Range("A7:A" & dlg) est vide.
Si c'est le cas, il y aura suppression de la plage Range("A7:H" & dlg).
Mais voila, selon l'exemple joint, la plage désignée par la suppression est toujours Range("A1:H7") au lieu de Range("A7:H10") !
Sub test()
Dim dlg As Long
With Sheets(1)
' S'il y a des données depuis la cellule A7
If Application.CountA(Range("A7:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)) > 0 Then
Debug.Print Application.CountA(Range("A7:A" & .Cells(.Rows.Count, 1).End(xlUp).Row))
' La dernière ligne sera caluclée depuis la colonne F
dlg = .Cells(.Rows.Count, 6).End(xlUp).Row
Else
' Sinon la dernière ligne sera caluclée depuis la colonne G
dlg = .Cells(.Rows.Count, 7).End(xlUp).Row
End If
' On supprime la plage
Debug.Print "la tableau à supprimer est : " & .Range("A7:H" & dlg).Address
'.Range("A7:H" & dlg).Delete
End With
End SubMerci d'avance.
Bonjour Apt
Ton problème est normal
Si l'on regarde ton code ton 1er test n'est pas bon, ce qui fait que la dernière ligne est calculée à partir de la colonne F
La colonne F ne contenant rien dans ton exemple, la dernière ligne retournée est = 1
Tu demandes donc ensuite à Excel de te donner l'adresse A7:H1, Excel convertira systématiquement le plus petit chiffre pour la première cellule et l'autre pour la dernière, soit l'adresse A1:H7
Voici le code correcte
Sub test()
Dim dlg As Long
With Sheets(1)
' S'il y a des données depuis la cellule A7
If Application.CountA(Range("A7:A" & .Rows.Count)) > 0 Then
Debug.Print Application.CountA(Range("A7:A" & .Cells(.Rows.Count, 1).End(xlUp).Row))
' La dernière ligne sera caluclée depuis la colonne F
dlg = .Range("F" & .Rows.Count).End(xlUp).Row
Else
' Sinon la dernière ligne sera caluclée depuis la colonne G
dlg = .Range("G" & .Rows.Count).End(xlUp).Row
End If
' On supprime la plage
Debug.Print "la tableau à supprimer est : " & .Range("A7:H" & dlg).Address
'.Range("A7:H" & dlg).Delete
End With
End SubA+
Bonjour Bruno et merci pour l'astuce