Microsoft 365 tester valeur Combo et ajouter

eric72

XLDnaute Accro
Bonjour à tous,

Je rencontre un problème, je m'explique:
j'ai un userform avec une combobox alimentée par un tableau "TbFournisseur", je souhaite que lorsque je saisie une valeur qui n'existe pas dans le tableau, celle-ci soit ajoutée dans le tableau.
Malheureusement je ne trouve pas la solution, pire encore quand je lance mon code il me ferme mon fichier et je ne comprends pas pourquoi.
Ou est la boulette!!!
Merci a tous pour votre dévouement.
Eric
 

Pièces jointes

  • test.xlsm
    24.7 KB · Affichages: 4
Solution
Bonjour

remplir un combobox avec un rowsource est souvent source de pb lorsque celui ci évolue

voir pj pour remplir le combo
et pour savoir si une nouvelle entrée fait déjà partie de la liste du combo. il suffit de tester le combo.listindex

vgendron

XLDnaute Barbatruc
Bonjour

remplir un combobox avec un rowsource est souvent source de pb lorsque celui ci évolue

voir pj pour remplir le combo
et pour savoir si une nouvelle entrée fait déjà partie de la liste du combo. il suffit de tester le combo.listindex
 

Pièces jointes

  • test (4).xlsm
    18.2 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
la chose est simple
tu ouvre ton userform
dans le activate
combobox1.list=mafonctionliste(montableau)
'mon tableau peut etre une range ou un name

'la fonction liste
function mafonctionliste(r as range)
mafonctionliste=r.value
end function


quand tu ajoute dans le tableau avec par exemple un bouton dans le userform
tu refait appel a cette fonction
dans le click du bouton
après avoir transférer les données de tes controls dans le tableau
combobox1.list=mafonctionliste(montableau)

ta combo sera toujours a jour
c'est d'une simplicité enfantine
il faut simplement fonctionaliser le remplissage en dhors de tout event et l'appeler a souhait
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Toutes vos valeurs (fournisseur étant dans la cb)
Si cb.Value <>"" et cb.Listindex = -1 c'est que .Value n'existe pas dans la liste des fournisseurs. Pas besoin de re tester à partir de la feuille.

Code du userform
VB:
Sub RemplitLesListes()
    Me.CbFournisseur.List = ThisWorkbook.Sheets("Feuil1").Range("TbFournisseur[fournisseur]").Value
End Sub

Private Sub Valider_Click()
    ' si l'item n'existe pas dans la combobox
    If Me.CbFournisseur.ListIndex = -1 And Me.CbFournisseur.Value <> "" Then
        With ThisWorkbook.Sheets("Feuil1").ListObjects("TbFournisseur")
            ' rajouter l'item (peut-être vaudrait-il le coup de demander à l'utilisateur avant)
            .ListRows.Add().Range(1, 1) = Me.CbFournisseur.Value
            RemplitLesListes
        End With
    End If
End Sub

Private Sub UserForm_Initialize()
    RemplitLesListes
End Sub
 

Pièces jointes

  • eric72.xlsm
    20 KB · Affichages: 3

eric72

XLDnaute Accro
la chose est simple
tu ouvre ton userform
dans le activate
combobox1.list=mafonctionliste(montableau)
'mon tableau peut etre une range ou un name

'la fonction liste
function mafonctionliste(r as range)
mafonctionliste=r.value
end function


quand tu ajoute dans le tableau avec par exemple un bouton dans le userform
tu refait appel a cette fonction
dans le click du bouton
après avoir transférer les données de tes controls dans le tableau
combobox1.list=mafonctionliste(montableau)

ta combo sera toujours a jour
c'est d'une simplicité enfantine
il faut simplement fonctionaliser le remplissage en dhors de tout event et l'appeler a souhait
Je comprends Patrick mais ça n'est pas la dessus que mon code bloque (remplitleslistes) mais sur le fait d'ajouter une ligne à mon tableau si la valeur de la Combo n'existe pas.
Merci
 

eric72

XLDnaute Accro
Bonjour,

Toutes vos valeurs (fournisseur étant dans la cb)
Si cb.Value <>"" et cb.Listindex = -1 c'est que .Value n'existe pas dans la liste des fournisseurs. Pas besoin de re tester à partir de la feuille.

Code du userform
VB:
Sub RemplitLesListes()
    Me.CbFournisseur.List = ThisWorkbook.Sheets("Feuil1").Range("TbFournisseur[fournisseur]").Value
End Sub

Private Sub Valider_Click()
    ' si l'item n'existe pas dans la combobox
    If Me.CbFournisseur.ListIndex = -1 And Me.CbFournisseur.Value <> "" Then
        With ThisWorkbook.Sheets("Feuil1").ListObjects("TbFournisseur")
            ' rajouter l'item (peut-être vaudrait-il le coup de demander à l'utilisateur avant)
            .ListRows.Add().Range(1, 1) = Me.CbFournisseur.Value
            RemplitLesListes
        End With
    End If
End Sub

Private Sub UserForm_Initialize()
    RemplitLesListes
End Sub
Bonjour Hasco,
En effet ça fonctionne aussi parfaitement, super!!!
Merci beaucoup
Eric
 

Discussions similaires

Réponses
5
Affichages
278
Réponses
57
Affichages
846

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg