Nouvelle ligne dans un tableau VBA

Résolu/Fermé
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 13 janv. 2020 à 20:53
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 14 janv. 2020 à 19:48
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!
A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 13 janv. 2020 à 21:24
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
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
Modifié le 14 janv. 2020 à 19:52
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