Mise en forme du Tableau non respecté à l'insertion avec USERFORM

Bonjour à tous,

Je suis en mode apprentissage VBA et j'ai suivi des tutos pour essayer de comprendre.
Je me retrouve devant un dilem, que je n'arrive pas à régler.

Lors de l'insertion dans un tableau avec un USERFORM, dès la deuxième ligne, le tableau n'est plus pris en compte.
Je vais joindre une capture ainsi que le fichier, car je suis perdu et cela vous montrera ce qui ce passe.

tbl erreur

Et voici mon fichier. Si je pouvais savoir ou j'ai fais mon erreur, et comment la corriger, SVP !
Par avance Merci

14test-usf.xlsb (27.35 Ko)

Bonjour

Je suppose que c'est votre code Ajouter qui est concerné par votre demande.

Vous êtes en Tableau Structuré, donc voici déjà une petit lien explicatif réalisé par Thev et qui devrait vous aider à comprendre --> VBA - Tableaux structurés

1. Désactivez cette ligne

last_Row = Application.WorksheetFunction.CountA(sh.Range("A:A"))

2. Remplacez ces lignes

    ' Ajout Automatique d'un numéro => ID
   sh.Range("A" & last_Row + 1).Value = "=Row()-1"
   ' Ajout des données dans chaque colonne correspondant
   sh.Range("B" & last_Row + 1).Value = Me.CivBox.Value
   sh.Range("C" & last_Row + 1).Value = Me.NomBox.Value
   sh.Range("D" & last_Row + 1).Value = Me.PrenomBox.Value
   sh.Range("E" & last_Row + 1).Value = Me.AgeBox.Value
   sh.Range("F" & last_Row + 1).Value = Me.MailBox.Value
   sh.Range("G" & last_Row + 1).Value = Me.TelBox.Value

par ceci

With sh.ListObjects("TBLTEST")
    If .ListRows.Count = 0 Then
        .ListRows.Add: last_Row = 1
    Else: .ListRows.Add: last_Row = .ListRows.Count 'insérer à la dernière ligne
    End If
    With .DataBodyRange
        ' Ajout Automatique d'un numéro => ID
        .Item(last_Row, 1) = "=Row()"
        ' Ajout des données dans chaque colonne correspondant
        .Item(last_Row, 2) = Me.CivBox.Value
        .Item(last_Row, 3) = Me.NomBox.Value
        .Item(last_Row, 1) = Me.PrenomBox.Value
        '....
    End With
End With

Pour supprimer les données de votre tableau structuré, sélectionnez les données dans la tableau structuré (attention par la ligne de la feuille mais uniquement les données), puis click droite , choisir Supprimer --> Lignes de Tableau (vous devez absolument voir l'option "Lignes de tableau")

Rem : je vois que vous utilisez l'instruction Rowsource. A éviter, cette instruction provoque parfois des soucis. Préférez toujours soit la méthode LIST ou ADDITEM

Cordialement

Bonjour Dan

En effet, c'est bien la partie ajouter qui pose problème.
Je vais reprendre cette partie pour la comprendre et lire les instructions des tableaux structurés.

Merci beaucoup de m'avoir portée cette solution. Je ne ferme pas le ticket pour l'instant.

Rechercher des sujets similaires à "mise forme tableau respecte insertion userform"