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 Sub

Merci d'avance.

25testplagevide.xlsm (16.34 Ko)

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 Sub

A+

Bonjour Bruno et merci pour l'astuce

Rechercher des sujets similaires à "tester plage vide"