Supprimer le contenu d'une ligne avec VBA

Hello.

Je sais que c'est un sujet récurrent mais malgré le temps passé à parcourir le forum, je n'ai pas compris la solution. Je me perds entre les .Select, les Range, les EntireRow etc...

Admettons que je veuille supprimer toute la ligne A à partir de la deuxième case (sachant que je ne connais pas la longueur de la ligne A).
Comment puis-je faire ?

Je pensais à

Range("A2:A").ClearContents

Mais pas du tout.

Merci d'avance !

Bonjour,

Un essai ...

Range(Cells(2, "A"), Cells(2, Columns.Count).End(xlToLeft)).ClearContents

ric

Hello ric,
Merci !
J'ai essayé de l'adapter dans un cadre plus complexe : j'ai un tableau de taille inconnu (qui débute en A1) a priori et j'aimerais bien supprimer l'ensemble du tableau, sauf la colonne A. Cependant, je n'y arrive pas. Comment faire ?

Merci.

Bonjour Kwns, ric,

Range(Cells(1, 2), Cells(Cells(Rows.Count, "A").End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)).ClearContents

et si ton tableau contient des en-têtes en ligne 1,

Range(Cells(2, 2), Cells(Cells(Rows.Count, "A").End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)).ClearContents

Bonne journée, cordialement.

Bonjour,

Si c'est une plage et non un tableau structuré ...

Sub test()
Dim Col As Integer
Dim Lig As Integer

Col = Cells(2, Columns.Count).End(xlToLeft).Column
Lig = Cells(Rows.Count, "A").End(xlUp).Row

' l'on n'efface pas la ligne d'entête
Range(Cells(2, "B"), Cells(Lig, Col)).ClearContents

' sans ligne d'entête
''Range(Cells(1, "B"), Cells(Lig, Col)).ClearContents

End Sub

ric

Hello ric,
Merci !
J'ai essayé de l'adapter dans un cadre plus complexe : j'ai un tableau de taille inconnu (qui débute en A1) a priori et j'aimerais bien supprimer l'ensemble du tableau, sauf la colonne A. Cependant, je n'y arrive pas. Comment faire ?

Merci.

Bonjour,

tu peux essayer ça :

Sub Kwns()

Dim NbrLigne As Integer, NbrColonne As Integer

NbrLigne = Range("A1").CurrentRegion.Rows.Count
NbrColonne = Range("A1").CurrentRegion.Columns.Count

'Efface le contenue de tout ce qui est à droite de la colonne A
Range("A1").CurrentRegion.Offset(0, 1).Resize(NbrLigne, NbrColonne - 1).Clear

'Redimenssionner le tableau avec seulement la colonne A
'Le nom du tableau "Tableau3" à modifier par le nom de ton tableau
ListObjects("Tableau3").Resize Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

End Sub

Hello,

Merci à tous, vos codes fonctionnent nickel (pour ric et xavosges en tout cas, je n'ai pas encore testé celui d'Arnaud) mais j'ai un problème, dans le cas où est B1 est vide (il n'y a pas d'entête dans mon tableau) ça efface aussi la colonne A.

Comment faire pour arranger ça ?

En fait dans un cas plus général, comment faire pour tout supprimer ce qu'il y a droite de la colonne A avec un nombre de ligne inconnu donc avec

Lig = Cells(Rows.Count, "A").End(xlUp).Row

mais sachant que peut être la colonne B est vide, la C aussi, ect... Juste un code qui dit "je supprime tout ce qu'il y a à droite de A" sans toucher à la colonne A.

Bonjour,

C'est toujours la même problématique ... il est difficile de gérer tous les cas de figure sans un fichier exemple ...

Un autre essai ...

Sub test()
Dim Col As Integer
Dim Lig As Integer

    Col = UsedRange.Columns.Count
    Lig = UsedRange.Rows.Count

    Range(Cells(2, "B"), Cells(Lig, Col)).ClearContents
End Sub

ric

Bonjour,
Voici un fichier :

18ricandco.xlsx (20.23 Ko)

Idéalement, ça serait d'avoir un code (je ne sais pas si c'est possible) qui à chaque exemple du fichier, associe le résultat que j'ai mis. Je détaille :

Exemple 1 : à droite de la colonne A, il y a un tableau rempli.
Résultat attendu : Plus que la colonne A

Exemple 2 : à droite de la colonne A, il y a des cases de remplies, d'autres non, parfois des colonnes vides
Résultat attendu : Plus que la colonne A

Exemple 3 : à droite de la colonne A, s'il n'y a ne serait ce qu'une case non vide, alors renvoyez supprimer toutes les cellules de façon à n'avoir plus que la colonne A
Résultat attendu : Plus que la colonne A

Exemple 4 : S'il y a rien autre que la colonne A
Resultat attendu
: La colonne A est inchangée

Merci infiniment.

Bonjour,

Et si l'on inclus la ligne 1 dans le code que je t'ai soumis ?

Est-ce que cela répond à tes attentes ?

Sub test()
Dim Col As Integer
Dim Lig As Integer

    Col = UsedRange.Columns.Count
    Lig = UsedRange.Rows.Count

    Range(Cells(1, "B"), Cells(Lig, Col)).ClearContents
End Sub

ric

Ca ne semblait pas fonctionner mais après réflexion, ceci :

Sub reset_table()
    Dim derniereLigne As Long
    Dim derniereColonne As Integer
    Dim myRange As Range
    derniereColonne = 0
    Range("A" & Rows.Count).End(xlUp).Select 'sélection de la dernière celulle non vide de la colonne A
    derniereLigne = Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de A
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select 'sélection de la première celulle vide de A
    derniereLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 'n° de la première ligne vide de A
    Set myRange = Range("A" & Rows.Count).End(xlUp) 'enregistrement de la dernière cellule non vide de la colonne A dans la variable myRange
    myRange.Select 'sélection de la variable myRange
    For i = 1 To derniereLigne
        Cells(i, Columns.Count).End(xlToLeft).Select 'sélection de la dernière cellule non vide de la ligne i
        If Cells(i, Columns.Count).End(xlToLeft).Column >= derniereColonne Then
            derniereColonne = Cells(i, Columns.Count).End(xlToLeft).Column 'n° de la dernière colonne non vide de la ligne i
        'Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Select 'sélection de la première cellule vide de la ligne i
        'derniereColonne = Cells(1, Columns.Count).End(xlToLeft).Column + 1
        End If
    Next i
    Range(Cells(1, 2), Cells(1, derniereColonne + 1)).EntireColumn.Delete
End Sub

fonctionne nickel (voire même, il y en a trop).

Merci encore pour ton (votre) aide !

Bonjour,

Une autre version ...

    With ActiveSheet
        dcol = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
        .Range(.Columns(2), .Columns(dcol)).Delete shift:=xlToLeft
    End With

ric

Rechercher des sujets similaires à "supprimer contenu ligne vba"