XL 2019 Redimensionner et supprimer des colonnes tableau (VBA)

Djoeharno

XLDnaute Nouveau
Bonjour !

J'ai un tableau (calcul de devis) au milieu d'une feuille excel (Range A20:E13) dont j'aimerai en cliquant sur une macro : Redimensionner le tableau et supprimer les lignes qui ont été ajoutées.

Actuellement j'ai 5 lignes sur mon tableau : en tête + 4 ligne de remplissage.
Imaginons que je remplisse 8 lignes, j'aimerai en cliquant sur un bouton supprimer l'ensemble des données du tableau + le redimensionner sur 4 lignes.

J'ai essayé avec le code suivant :

Sheets("Facture-Devis").Range("A21").Select
Range(Selection, Selection.End(xlDown)).ClearContents
Sheets("Facture-Devis").Range("C21").Select
Range(Selection, Selection.End(xlDown)).ClearContents
Sheets("Facture-Devis").Range("B21").Select
Range(Selection, Selection.End(xlDown)).ClearContents
Sheets("Facture-Devis").Range("D21").Select
Range(Selection, Selection.End(xlDown)).ClearContents
Sheets("Facture-Devis").Range("E13").ClearContents

ActiveSheet.ListObjects("Tableau1").Resize Range("$A$1:$G$10")

Pour la partie suppression, ça c'est ok par contre pour la partie redimensionnement, le tableau se redimensionne bien mais il ne supprime pas les lignes qui ont été ajouté.
Je voudrais donc en plus de redimensionner le tableau, supprimer les lignes qui ont été potentiellement ajouté en remplissant le tableau (quand c'est supérieur à 4 lignes par exemple)
 

Pièces jointes

  • TBLX.xlsx
    12.2 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Djoeharno, et bienvenu sur XLD,
Vous auriez du mettre un fichier exemple, cela aurait simplifier le problème. ;)
J'ai supposé que Range A20:E13 était plutôt Range A13:E20, donc un tableau structuré qui commence en ligne 13.
En PJ un essai avec :
VB:
Sub Nettoie()
   With [Tableau1]
        .ClearContents
        .Rows(1).Resize(.Rows.Count - 4).Delete xlUp
    End With
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    15.3 KB · Affichages: 4

Djoeharno

XLDnaute Nouveau
Ah par contre, je viens de voir que j'ai une erreur lorsque j'ai 4 lignes dans le tableau rempli et que du coup rien ne se supprime : Erreur définie par l'application pour par l'objet. Appui 2 fois d'affilé sur la macro, tu verras l'erreur. On peut peut être mettre une fonction SI?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous auriez du mettre un fichier exemple, cela aurait simplifier le problème.
C'était plus un conseil qu'autre chose.
Un bon vieux fichier test est toujours le bienvenu.

Une petite modif simple :
VB:
Sub Nettoie()
   With [Tableau1]
        .ClearContents
        If .Rows.Count > 4 Then .Rows(1).Resize(.Rows.Count - 4).Delete xlUp
    End With
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    15.2 KB · Affichages: 4

Discussions similaires

Réponses
3
Affichages
550
  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
292

Statistiques des forums

Discussions
311 720
Messages
2 081 925
Membres
101 841
dernier inscrit
ferid87