Erreur exécution fonction listrows.add

Bonjour.

J'ai une erreur d'exécution sur la fonction listrows.add et je n'arrive pas à comprendre où est mon erreur.

le nom du tableau est bien reconnu mais lorsque la ligne With Table.ListRows.Add s'exécute, erreur...La méthode add de l'objet ListRows à échoué

Private Sub CbAjouter_Click()

Dim Table As ListObject

    Set Table = Worksheets("Parametre").ListObjects("TbIdels")
    Debug.Print Table.Name & " " & Table.Range.Address

    If TboNom.Value <> "" And TboPrenom.Value <> "" Then

        With Table.ListRows.Add
        .Range(1) = UCase(TboNom.Value)
        .Range(2) = StrConv(TboPrenom.Value, vbProperCase)
        End With
    End If

End Sub
13essai.xlsm (17.30 Ko)

Bonjour,

Comme ceci :

Private Sub CbAjouter_Click()
    Dim Table As ListObject

    Set Table = Worksheets("Parametre").ListObjects("TbIdels")

    If TboNom.Value <> vbnulstring And TboPrenom.Value <> vbNullString Then
        With Table
            If .ListRows.Count = 0 Then
                .ListRows.Add: i = 1
            Else: .ListRows.Add: i = .ListRows.Count 'insérer à la dernière ligne
            End If
            .DataBodyRange(i, 1) = UCase(TboNom.Value)
            .DataBodyRange(i, 2) = StrConv(TboPrenom.Value, vbProperCase)
        End With
    End If
End Sub

NB : évitez l'utilisation de Rowssource, qui provoque parfois des soucis avec VBA? Préférez plutot les méthodes list ou additem
Supprimez la propriété Rowssource attribuée à votre listbox puis collez ce code dans votre userform

Private Sub UserForm_Initialize()
Dim i As Integer
Dim Table As ListObject

Set Table = Worksheets("Parametre").ListObjects("TbIdels")

With Table
    For i = 1 To .ListRows.Count
        LboInfi.AddItem .DataBodyRange(i, 1).Value
        LboInfi.List(LboInfi.ListCount - 1, 1) = .DataBodyRange(i, 2).Value
    Next i
End With
End Sub

Si ok, lors de votre réponse pensez à

Cordialement

Merci Dan pour cette réponse rapide.

je vais tester tout ça et je vous tiens au courant.

Bon après-midi.

bonjour le fil,

on peut faire cela en une fois

Private Sub CbAjouter_Click()
     Dim Table As ListObject

     Set Table = Worksheets("Parametre").ListObjects("TbIdels")
Debug.Print Table.Name & " " & Table.Range.Address

     If TboNom.Value <> "" And TboPrenom.Value <> "" Then
          Table.ListRows.Add.Range.Resize(, 2).Value = Array(UCase(TboNom.Value), StrConv(TboPrenom.Value, vbProperCase))
     End If

End Sub

Merci BsAlv pour ta réponse concise.

bonne journée

Rechercher des sujets similaires à "erreur execution fonction listrows add"