Inserer ligne avec VBA

Bonjour la famile.

besoin d'une petite astuce pour ce pauvre débutant VBA que je suis.

Public Sub Ajout_Ligne()
Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add
End Sub

le code ci-dessus me permet d'ajouter une ligne supplémentaire à mon tableau structuré.
Sauf que la nouvelle ligne qui s'ajoute ne conserve pas la même hauteur que la ligne précédente.

Comment y rémédier svpl ?

Bonjour,

Une possibilité en mettant toutes les lignes à la même hauteur :

Sub Ajout_Ligne()
    With Sheets("Feuil1").ListObjects("Tableau1")
         .ListRows.Add
         .DataBodyRange.RowHeight = 10
    End With
End Sub

Bonjour,

ci-dessous code ajustant la hauteur de la nouvelle ligne à la précédente :

Public Sub Ajout_Ligne()
    Dim ligne As ListRow
    Dim i As Integer

    With Range("Tableau1").ListObject
        Set ligne = .ListRows.Add: i = ligne.Index
        .ListRows(i).Range.RowHeight = .ListRows(i - 1).Range.RowHeight
    End With
End Sub

NB: Voir mon tutoriel sur les instructions spécifiques à un tableau structuré : https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Bonjour à tous,

Un essai.....assez semblable à Thev,

Public Sub Ajout_Ligne()
 Dim hauteur%
  With Sheets("Feuil1").ListObjects("Tableau1")
   If .ListRows.Count = 0 Then 'si aucunes  données dans le tableau
    hauteur = .HeaderRowRange.Cells(1).Offset(0, 1).RowHeight 'hauteur première ligne sous l'entête par défaut
   Else
    hauteur = .ListRows(.ListRows.Count).Range.RowHeight 'sinon, hauteur dernière ligne du tableau
   End If
  .ListRows.Add: .HeaderRowRange.Cells(1).Offset(.ListRows.Count).RowHeight = hauteur
 End With
End Sub

@thev: si le tableau est vide, excel génère une erreur, d'où mon "bidouillage",

Cordialement,

@xorsankukai

S'il s'agit de l'ajout de la première ligne (tableau vide et donc i = 1) , alors il reprendra la hauteur de la ligne d'entête représentée par ListRows(0). Pas besoin d'un test supplémentaire. Il suffit de placer la rectification de la hauteur après l'ajout de ligne.

Re,

Merci thev pour tes explications, pourtant j'ai bien rencontré une erreur...., sans doute une mauvaise utilisation du tableau structuré...

image image image

Amicalement,

@xorsankukai

Après vérification, tu as raison. Il faut donc rajouter une condition :

Public Sub Ajout_Ligne()
    Dim ligne As ListRow
    Dim i As Integer

    With Range("Tableau1").ListObject
        Set ligne = .ListRows.Add: i = ligne.Index
        If i > 1 Then .ListRows(i).Range.RowHeight = .ListRows(i - 1).Range.RowHeight _
        Else .ListRows(i).Range.RowHeight = .HeaderRowRange.RowHeight
    End With
End Sub

merci infiniment à tous

Rechercher des sujets similaires à "inserer ligne vba"