MACRO Ajout de ligne au tableau

Bonjour,

Je me tourne vers vous car je bloque sur le développement d'un classeur excel.

J'aimerais permettre pour chaque nouvelle affaire pouvoir utiliser une macro afin de l'ajouter pour limiter les actions à la main sur les tableaux structurés.

Ma macro est créé, elle rajoute une ligne et rempli le code affaire dans la bonne case mais une fois qu'on en crée une deuxième, la ligne s'ajoute bien mais la première prend le même code affaire que la deuxième.

Pour simplifier, quand je rentre mon code affaire et que je valide, ce code affaire s'écrit sur toute les lignes du tableau !!

J'arrive pas à comprendre pourquoi... Pouvez-vous m'aider ? je vous joins le fichier.

Merci d'avance pour votre aide.

Vince77

Bonjour,

L'écriture en tableau structurée est la suivante

Private Sub CommandButton1_Click()
Dim tableau As ListObject

    Nom_tableau = "IDF_SUD"
    Set tableau = ActiveSheet.ListObjects(Nom_tableau)
    tableau.ListRows.Add
    i = tableau.ListRows.Count ' la dernière
    tableau.ListColumns("Code affaire").DataBodyRange.Rows(i).Value = TextBox.Value

    Unload Me

End Sub

reste à gérer l'insertion d'une ligne puisque tu as 2 tableaux

ou en reprenant ta solution d'insertion

Private Sub CommandButton1_Click()

    Nom_tableau = "IDF_SUD"
    Range(Nom_tableau).Rows(1).Insert
    ActiveSheet.ListObjects(Nom_tableau).ListColumns("Code affaire").DataBodyRange.Rows(1).Value = TextBox.Value

    Unload Me

End Sub

Bonjour,

Merci beaucoup pour ton aide.

A vrai dire ta première solution suffit en thermes d'insertion, il n'écrit pas sur la même ligne et prend tout seul "l'initiative" de créer une nouvelle ligne.

Je pense qu'à ce stade je vais utiliser ta première solution mais tout de même garde la deuxième sous le coude, au mois pour exemple si besoin.

Petite question, est ce que c'est la bonne façon d'ajouter une valeur à insérer depuis le userform :

Private Sub CommandButton1_Click()

    Nom_tableau = "IDF_SUD"

    Set tableau = ActiveSheet.ListObjects(Nom_tableau)
    tableau.ListRows.Add
    i = tableau.ListRows.Count ' la dernière
    tableau.ListColumns("Code affaire").DataBodyRange.Rows(i).Value = BoxCode.Value

tableau.ListColumns("Conducteur").DataBodyRange.Rows(i).Value = BoxConduc.Value

    Unload Me

End Sub

Merci d'avance.

Oui,

tu peux aussi remplacer le nom de la colonne par son numéro

tableau.ListColumns(j).DataBodyRange.Rows(i).Value

voire aussi écrire

tableau.DataBodyRange.Cells(i,j).Value

où i est le numéro de la ligne et j la colonne (dans le référentiel du tableau et non d la page)

Ok super, merci à toi !!

Tout est ok pour moi du moins pour ce sujet ^^ donc je met en résolu le sujet !!

Rechercher des sujets similaires à "macro ajout ligne tableau"