Ajout automatique d'une valeur dans la liste source d'un combobox

je2ls

XLDnaute Nouveau
Bonjour,

Tout d'abord, je tiens à préciser que je suis nouveau sur le forum et je m'excuse d'avance si j'enfreins, sans le vouloir, certaines règles. D'autre part je suis débutant en vba.

Après de nombreuses recherches infructueuses voici mon problème :

J'utilise un userform pour remplir une base de données.
Une combobox est alimenter par une liste de clients se trouvant dans une feuille (nommée liste).

Cependant cette liste est amenée à évoluer. Est il possible qu'un nouveau client saisi dans la combobox (donc n'existant pas dans la liste source) soit récupéré et ajouté à la source ? avec un message du genre : Attention ce client n'existe pas, voulez vous l'ajouter ?
(ma liste de clients se redimensionne déjà automatiquement)

J'espère que ma question est claire.
D'avance merci.
 

Pierrot93

XLDnaute Barbatruc
Re : Ajout automatique d'une valeur dans la liste source d'un combobox

Bonjour,

regarde ceci, si cela peut t'aider à avancer :
Code:
If MsgBox("Attention, ajout ?", vbYesNo) = vbYes Then _
    ComboBox1.AddItem ComboBox1.Value

mais comme tu ne nous as pas dit comment était alimenté ta combo, je doute que cela fonctionne en l'état... d'autre part, peut être des tests à faire au préalable afin de déterminer si la saisie ne correspond pas déjà à une entrée de ta combo...

un tout petit fichier avec uniquement les données concernant ton problème nous aurait aidé à t'aider..

bonne journée
@+
 

je2ls

XLDnaute Nouveau
Re : Ajout automatique d'une valeur dans la liste source d'un combobox

Bonjour,

tout d'abord merci pour cette réponse rapide.
En effet en l'état ça ne marche pas. Et oui il semble logique de déterminer si la saisie ne correspond pas déjà à une entrée de ma combo.

J'ai donc refait un petit userform très simplifié avec juste une combo et 2 boutons (ça devrait suffire) que je vous joint.

Ce que je n'arrive pas à faire c'est lors d'une entrée "manuelle" dans la combo (ex : bbb), c'est que ce nouveau client s'ajoute à la "liste source" de la feuil1.

Encore merci et bonne journée.
Moi je vais me coucher car je bosse de nuit.
Donc à plus tard.
 

Pièces jointes

  • Classeur1.xlsm
    14.4 KB · Affichages: 168
  • Classeur1.xlsm
    14.4 KB · Affichages: 157
  • Classeur1.xlsm
    14.4 KB · Affichages: 168

je2ls

XLDnaute Nouveau
Re : Ajout automatique d'une valeur dans la liste source d'un combobox

Re,

Désolé, essaie avec ça.
Sinon, je verrais plus tard.

Bonne soirée
 

Pièces jointes

  • Classeur1.xls
    38.5 KB · Affichages: 227
  • Classeur1.xls
    38.5 KB · Affichages: 212
  • Classeur1.xls
    38.5 KB · Affichages: 254

Pierrot93

XLDnaute Barbatruc
Re : Ajout automatique d'une valeur dans la liste source d'un combobox

Bonjour,

regarde ceci, à noter qu'il est préférable d'alimenter ta combo via la propriété list plutôt que par "rowsource", enfin à mon sens... surtout si il faut ajouter / enlever des items en cours de route...
Code:
Private Sub UserForm_Initialize()
With Sheets("Feuil1")
    ComboBox1.List = .Range("D1", .Range("D65536").End(xlUp)).Value
End With
End Sub
Private Sub CommandButton1_Click()
If ComboBox1.Value <> "" Then
    If IsError(Application.Match(ComboBox1.Value, ComboBox1.List, 0)) Then
        If MsgBox("Attention, ajout ?", vbYesNo) = vbYes Then _
            ComboBox1.AddItem ComboBox1.Value
    End If
End If
End Sub

bonne journée
@+
 

je2ls

XLDnaute Nouveau
Re : Ajout automatique d'une valeur dans la liste source d'un combobox

Bonjour,

Merci beaucoup, ça marche nickel. j'ai pu l'intégré, avec juste une légère adaptation, à ma macro complète.

Private Sub ComboBox1_AfterUpdate()
If ComboBox1.Value <> "" Then
If IsError(Application.Match(ComboBox1.Value, ComboBox1.List, 0)) Then
If MsgBox("Attention, ajout ?", vbYesNo) = vbYes Then _
Sheets("feuil1").Range("d65536").End(xlUp).Offset(1, 0).Value = ComboBox1.Value
ComboBox1.AddItem ComboBox1
End If
End If
End Sub

Je ne connaissais pas la propriété list, mais je note. En fait, je ne connais pratiquement rien en programmation (vba ou autre) et ma macro ressemble pour l'instant plus à un patchwork qu'autre chose. Mais ça marche. Et c'est encore mieux grace à toi.

Donc encore un grand merci, bonne journée et peut-être à une autre fois.
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote