Nouvelle ligne dans un tableau VBA

Résolu
Anthelm Messages postés 202 Statut Membre -  
Anthelm Messages postés 202 Statut Membre -
Bonjour,

J'ai trouvé ces deux macros qui permettent de créer une ligne à la fin d'un tableau:

Celle ci marche très bien:

Range("Tableau1").ListObject.ListRows.Add AlwaysInsert:=False

Celle la par contre, je ne vois pas ou mettre "MyNewRow" après, comment la lancer.

Set myNewRow = ActiveWorkbook.Worksheets(1).ListObject(1).ListRows.Add

Dans tous les cas, j'aimerai ajouter des valeurs à la ligne en question, et je ne vois pas bien comment le formuler...

• Range("Tableau1").ListObject.ListRows.Add AlwaysInsert:=False
•(Cetteligne) colonne 1.value = "Valeur 1"
•(Cetteligne) colonne 2.value = "Valeur 2"

... Quelque chose du genre!

Merci beaucoup!

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour;

    Sub test()
    Dim lo As ListObject, rCell As Range, Calc As XlCalculation
        Calc = Application.Calculation
        Application.Calculation = xlCalculationManual
        Set lo = Worksheets(1).ListObjects(1)
        With lo
            'si le tableau n'est pas vide, dernière cellule colonne décalée d'une ligne
            If .InsertRowRange Is Nothing Then
                Set rCell = .HeaderRowRange.Cells(1).Offset(.ListRows.Count + 1)
            Else
                '1ère. ligne du tableau
                Set rCell = .InsertRowRange.Cells(1)
            End If
        End With
    
        'remplissage de la nouvelle ligne
        With rCell
            .Value = "à définir"
            .Offset(, 0).Value = "Valeur 1"
            .Offset(, 1).Value = "Valeur 2"
        End With
        Application.Calculation = Calc
    End Sub
    
    
    


    1
  2. Anthelm Messages postés 202 Statut Membre 1
     
    Merci, mais...

    "si le tableau n'est pas vide, dernière cellule colonne décalée d'une ligne"

    ? :)

    Edit:

    Ok j'ai regardé la définition de InsertRowRange:
    "Si l'option Insérer une ligne n'est pas visible, car la liste est inactive, l'objet Nothing est renvoyé."

    Si le tableau est vide, la ligne 1 contiendra les entêtes, les premières données arriveront simplement en ligne 2 je suppose, donc peut être pas besoin de ca.

    With rCell
    .Value = "à définir"
    .Offset(, 0).Value = "Valeur 1"
    .Offset(, 1).Value = "Valeur 2"
    End With
    Application.Calculation = Calc

    Yes, ok :) Merci beaucoup ! Je vais partir sur ça.
    0