Remplissage tableau structuré via userform

Bonjour,

Je voudrais remplir un tableau structuré via textbox

Mais je ne sais pas ecrire ce code

J ai un userform avec 6 textbox et un boutton valider

Dans ma feuille "Lexique2" en A3 un tableau nommé "T_Noir" qui comporte des entête:

- Dénomination

- CMU

- Longueur

- Diamètre

- Lieu de stockage

- Appartenance

je voudrais remplir mon tableau avec les valeurs de mes textbox correspondantes, si dans mon userform avec les 6 textbox correspondantes sont remplies une ligne complete va se remplir dans mon tableau

si je ne remplis que 2 textbox les valeur s ajoute aux colonnes correspondante

Mais sans case vide

en gros la text box "Dénomination" ajoute la valeur renseignée en dessous des valeurs deja presente de la colone "Dénomination" du "T_Noir"

J'ai oublié... (si possible)

si je rentre une valeur deja existante dans la colone concerné celle ci ne s ajoute pas et un message apparaît"valeur deja existante"

Pour eviter les doublons

Bonjour,

ci-dessous exemple de code :

Option Explicit

Private Sub tbx_dénomination_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Integer

    If tbx_dénomination = Empty Then Exit Sub
    With [T_Noir].ListObject
        If .ListRows.Count > 0 Then
            i = 0
            On Error Resume Next
            i = Application.Match(tbx_dénomination.Value, .ListColumns("Dénomination").DataBodyRange, 0)
            On Error GoTo 0
            If i > 0 Then MsgBox "dénomination en double": tbx_dénomination = Empty: Exit Sub
        End If
    End With

End Sub

Private Sub cmd_ajouter_Click()
    Dim ligne As ListRow
    Dim i As Long

    If tbx_dénomination = Empty Then MsgBox "Veuillez remplir la dénomination": Exit Sub

    With [T_Noir].ListObject
        Set ligne = .ListRows.Add: i = ligne.Index   'ajout ligne à la fin du tableau

        .ListColumns("Dénomination").DataBodyRange(i) = tbx_Dénomination
        .ListColumns("CMU").DataBodyRange(i) = tbx_CMU
        .ListColumns("Longueur").DataBodyRange(i) = tbx_Longueur
        .ListColumns("Diamètre").DataBodyRange(i) = tbx_Diamètre
        .ListColumns("Lieu de stockage").DataBodyRange(i) = tbx_Lieu_de_stockage
        .ListColumns("Appartenance").DataBodyRange(i) = tbx_Appartenance

    End With

End Sub

Merci pour la rapidité

Je n arrive pas a adapter le code ?

adapte

J ai reussi a adapter en renommant mes bouttons et textbox

le code fonctionne bien mais j ai un problème

si je ne remplis pas "dénomination"

je ne peux rien ajouter

j ai besoin de pouvoir ajouter une denomination seule

ou une CMU seule ...

les valeur que j ajoute ne sont pas liée entre elles

Bonjour,

ci-joint code modifié

Option Explicit

Private Sub tbx_dénomination_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Integer

    If tbx_Dénomination = Empty Then Exit Sub
    With [T_Noir].ListObject
        If .ListRows.Count > 0 Then
            i = 0
            On Error Resume Next
            i = Application.Match(tbx_Dénomination.Value, .ListColumns("Dénomination").DataBodyRange, 0)
            On Error GoTo 0
            If i > 0 Then MsgBox "dénomination en double": tbx_Dénomination = Empty: Exit Sub
        End If
    End With

End Sub

Private Sub tbx_CMU_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Integer

    If tbx_CMU = Empty Then Exit Sub
    With [T_Noir].ListObject
        If .ListRows.Count > 0 Then
            i = 0
            On Error Resume Next
            i = Application.Match(tbx_CMU.Value, .ListColumns("CMU").DataBodyRange, 0)
            On Error GoTo 0
            If i > 0 Then MsgBox "CMU en double": tbx_CMU = Empty: Exit Sub
        End If
    End With

End Sub

Private Sub cmd_ajouter_Click()
    Dim ligne As ListRow
    Dim i As Long
    Dim ctrl As Control

    '// Contrôle Dénomination et CMU
    If tbx_Dénomination = Empty And tbx_CMU = Empty Then MsgBox "Veuillez remplir la dénomination ou la CMU ": Exit Sub

    '// Ajout et remplissage ligne dans tableau
    With [T_Noir].ListObject
        Set ligne = .ListRows.Add: i = ligne.Index   'ajout ligne à la fin du tableau

        .ListColumns("Dénomination").DataBodyRange(i) = tbx_Dénomination
        .ListColumns("CMU").DataBodyRange(i) = tbx_CMU
        .ListColumns("Longueur").DataBodyRange(i) = tbx_Longueur
        .ListColumns("Diamètre").DataBodyRange(i) = tbx_Diamètre
        .ListColumns("Lieu de stockage").DataBodyRange(i) = tbx_Lieu_de_stockage
        .ListColumns("Appartenance").DataBodyRange(i) = tbx_Appartenance

    End With

    '// réinitialisation Textbox
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then ctrl = Empty
    Next ctrl

End Sub

merci

Rechercher des sujets similaires à "remplissage tableau structure via userform"