Combobox Paramétrage

Bonjour,

J'ai une petite question sur les combo box sur les formulaires,

J'ai une combobox paramétrée avec comme valeurs ( TOTO, TITI, TATA) .

With Me.ComboBox1

.AddItem "TITI"

.AddItem "TATA"

.AddItem "TOTO"

Demain l'utilisateur peut rentrer aussi TUTU,

Comment faire pour que le combobox prenne en compte cette valeur dans la liste proposée ?

Je n'arrive pas à trouver une solution simple et claire à ce sujet,

Merci d'avance de votre aide,

A+

Bonjour

J'ai été confronté à ce Pb et je l'ai contourné,.

J'utilise une liste de valeurs sur un onglet, si la valeur saisie n'existe pas, et que je veux la rajouter, ouverture d'un 2ème formulaire en cascade, formulaire de confirmation de saisie. Si "oui" je rajoute la valeur en bas de la liste ( sous forme de tableau dynamique nommé, dont le nom est en rowsource de la combobox... un peu tarabiscoté, mais je pense que les pro du Vba vont te trouver ce qui va bien ( et qui m'intéressera aussi...)

A tout hasard le lien du tuto de Jacques Boisgontier , que je viens de récupérer et qui comme toujours est très fourni en exemples..

http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#DifferentesFaconsAlimListe

Dans l'attente de la bonne réponse

Cordialement

FINDRH

Bonsoir,

A tester

J'utilise ce code placé dans Initialize

"Accueil, c'est l'onglet ou se trouve ma colonne de données ( col A) , représentée par le chiffre 1

Private Sub UserForm_Initialize()
 Dim L As Long

For k = 3 To Ws.Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox1.AddItem Sheets("Accueil").Cells(k, 1)
  Next k
End Sub

Amicalement

Pierrot

bonjour,

Tout d'abord, on peut aussi utiliser un combo comme une zone de Liste (en mettant sa propriété Style sur 2 "fmStyleDropDownListe"

et dans cas la question ne se pose pas...

En mode Combo (0) si on veut récupérer une nouvelle entrée de l'utilisateur on récupère la propriété .Value du Combo.

Dans ce cas sa propriété ListIndex est -1

Donc tu peux poser ta macro de la manière suivante :

Sub LireSaisie() 
Dim var
Var = ComboBox1.ListIndex
If Var = -1 and len(ComboBox1.Value)>0 then
Msgbox "Nouvelle entrée : " & ComboBox1.Value
'ton traitement dans ce cas
End if
End Sub

A+

Bonsoir,

Une autre version à tester

Pierrot

Bonsoir,

Autre solution en inhibant toute saisie de caractère :

Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   KeyAscii = 0
End Sub

Bonsoir,

Je n'arrive pas à trouver une solution simple et claire à ce sujet,

La solution c'est simplement ce que tu veux faire...

Galopin [ ] t'a indiqué le meilleur moyen de détecter une nouvelle entrée. Une fois détecter, si tu veux la rajouter à la liste tu le fais (tu n'oublies pas dans ce cas de réaffecter la propriété RowSource de la Combo pour prise en compte immédiate...). Tu peux questionner préalablement l'utilisateur sur l'opportunité de le faire. Bref, tu mets en oeuvre ce que tu veux obtenir...

Cordialement.

Bonjour,

Voici mon fichier,

Et j'aimerai pouvoir récupérer dans le combobox les valeurs insérées.

La difficulté aussi est de récupérer simplement les valeurs uniques.

Disponible pour en discuter,

Merci de votre aide,

24classeurcombo.xlsm (22.50 Ko)

Bonjour

est ce cela que tu veux ?

tu tapes les premières lettres et tu choisis...

Cordialement

FINDRH

45classeurcombo.xlsm (22.38 Ko)

Bonjour FINDRH,

Merci pour ton retour,

Mais le sujet est un tout petit plus compliqué, et c'est la ma difficulté.

C'est que les valeurs paramétrés par défaut ne sont pas forcément écrites dans le tableau inventaire...

Bonjour,

Alors il ne faut pas charger le ComboBox avec des valeurs par défaut, mais avec la liste (sans doublon) de l'inventaire.

Un exemple en pj avec tri possible des valeurs du ComboBox :

Private Sub UserForm_Initialize()
   Dim Ligne As Long
   Dim I As Integer, Cpt As Integer
   Dim NoDoublon As New Collection, bTrier As Boolean
   With ShInventaire      ' CodeName de la feuille "Inventaire"

      bTrier = (.Shapes("ChBTrier").DrawingObject.Value = 1)
      For Ligne = 2 To .UsedRange.Rows.Count
         If .Cells(Ligne, "A") <> "" Then
            On Error Resume Next
            ' On ajoute la valeur dans un objet n'acceptant pas les doublons
            NoDoublon.Add Ligne, .Cells(Ligne, "A")
            ' Si la valeur n'est pas en double (pas d'erreur) on l'ajoute au ComboBox
            If Err.Number = 0 Then
               Cb_test.AddItem .Cells(Ligne, "A")
            End If
            On Error GoTo 0
         End If
      Next Ligne
      ' Si
      If Cb_test.ListCount > 1 And bTrier Then Call Trier(Cb_test)
   End With
End Sub

Sub Trier(Cb_test) ' Tri Ascendant
   Dim a, b, t
   With Cb_test
      t = .ListCount - 1
      For a = 0 To t - 1
         For b = a + 1 To t
            If .List(a) > .List(b) Then
               w = .List(a)
               .List(a) = .List(b)
               .List(b) = w
            End If
         Next b
      Next a
   End With
End Sub

Bonjour,

Louyjotj, j'avais lu ton dernier message à l'envers. Si tu veux gérer une base de données comme il se doit, tu dois avoir une liste complête à un seul endroit, et tu ajoutes des items avant de faire ton inventaire.

Fichier mit à jour avec une feuille liste de choix et la feuille inventaire.

Bonjour Benead,

Merci pour tes différents retours,

Mais je n'ai surement pas été clair lors de mon dernier message après avoir visualisé tes retours.

L'idée d'avoir la liste des choix sur une feuille me plait ( je la cacherai par la suite pour les users de l'userform)

Mais comment l'utilisateur peut faire en utilisant l'user form l'ajout d'un attribut dans l'inventaire : TOTO et de par la suite de le lire à l'écran dans le combobox : TOTO ???

Produit qui ne sera pas par défaut dans notre liste des chois ?

Suis je clair ?

N'hésites pas si tu as des questions,

Rechercher des sujets similaires à "combobox parametrage"