Macro de suppression

FAB80170

XLDnaute Junior
Bonjour à tous,

après traitement de mes données, j'exécute une macro de suppression (nettoyage) sur certaines colonnes de mon tableau (format table); la suppression des données s'arrête dès à la première cellule vide rencontrée.
Comment puis corriger mon code, afin que le traitement se fasse jusqu'à la dernière cellule de (des) colonne(s) de mon tableau (format table).

Un exemple du code employé.

Sheets("CLTS DEPARTS").Select
Range("A2:L2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("T2:V2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A2").Select

Par avance, merci pour votre retour.
 

Jacky67

XLDnaute Barbatruc
Bonjour à tous,

Comment puis corriger mon code, afin que le traitement se fasse jusqu'à la dernière cellule de (des) colonne(s) de mon tableau (format table).

Bonjour,
Une proposition......
Code:
Sub efface()
    Dim Derlg As Long
    With Sheets("CLTS DEPARTS")
        Derlg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
        Union(.Range("A2:L" & Derlg), .Range("T2:V" & Derlg)).ClearContents
        .[a2].Activate
    End With
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour FAB80170, Jacky67,
Comment puis corriger mon code, afin que le traitement se fasse jusqu'à la dernière cellule de (des) colonne(s) de mon tableau (format table).
Ce n'est pas très clair, je vois 2 interprétations :

1) vous voulez effacer jusqu'à la première ligne vide des colonnes A:L et T:V :
Code:
Sub Effacer1()
Dim i&
With Sheets("CLTS DEPARTS")
  With .[A2:L2]
    While Application.CountA(.Offset(i)): i = i + 1: Wend
    If i Then .Resize(i) = ""
  End With
  i = 0
  With .[T2:V2]
    While Application.CountA(.Offset(i)): i = i + 1: Wend
    If i Then .Resize(i) = ""
  End With
End With
End Sub
2) vous voulez effacer les colonnes A:L et T:V du tableau Excel :
Code:
Sub Effacer2()
Intersect(Sheets("CLTS DEPARTS").ListObjects(1).DataBodyRange, Sheets("CLTS DEPARTS").[A:L,T:V]) = ""
End Sub
A+
 

FAB80170

XLDnaute Junior
BonsoirCe lien n'existe plus job75,
merci à vous; les 2 codes fonctionnent parfaitement (proposition 2 pour job75).
J'essaye maintenant de traiter plusieurs onglets du classeur, mais je n'arrive pas à compiler vos codes respectifs.
Désolé, j'aurais dû le notifier lors de ma demande initiale.
Encore merci .
 

Jacky67

XLDnaute Barbatruc
BonsoirCe lien n'existe plus job75,
J'essaye maintenant de traiter plusieurs onglets du classeur, mais je n'arrive pas à compiler vos codes .
Hello Job75
Re,
Autre proposition...
Code:
Sub efface()
    Dim Derlg As Long, Sh As Variant
    For Each Sh In Array("CLTS DEPARTS", "onglet2", "onglet3")    '*** ici le nom des onglets à traiter
        With Sheets(Sh)
            On Error Resume Next
            Derlg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
            If Derlg > 1 Then Union(.Range("A2:L" & Derlg), .Range("T2:V" & Derlg)).ClearContents
            On Error GoTo 0
        End With
    Next
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Ceci est mieux car ainsi les tableaux peuvent être déplacés sur d'autres colonnes :
Code:
Sub Effacer()
Dim w As Worksheet
For Each w In Worksheets
  If w.ListObjects.Count Then
    With w.ListObjects(1).DataBodyRange
      Union(.Columns("A:L"), .Columns("T:V")).ClearContents
    End With
  End If
Next
End Sub
A+
 

Discussions similaires

Réponses
3
Affichages
568