Mise à jour liste d'une combobox

Chloulou

XLDnaute Occasionnel
Bonjour,
je vous expose mon pb car j'ai rien trouvé la dessus

Jai plusieurs combobox, remplies à partir de plage de cellules, nommées.
Mais je souhaite que lorsque l'utilisateur du formulaire saisie une valeur non présente dans la list de la combobox, cette valeur soit automatiquement mise en mémoire et ajoutée à la liste nommée.

Donc j'ai crée plusieur macros pour cela, mais une bug subsite : dites moi ce que vous en pensez. Il me retourne l'erreur 13 (incompatibilité de type ) quand j'appelle la macro de la facon suivante

Application = ZoneApplication.Text ' ZoneApplication est une combobox

Call RajoutEntreeListe(Worksheets("Listes").Range("ListeApplication"), Application, UserForm1.ZoneApplication)

******
Public Sub RajoutEntreeListe(Plage As Range, Entree As String, Liste As Controls)

'Objectif : si l'utilisateur saisie une valeur dans une combobox,
'qui n'appartient pas à la liste de valeurs initiales, celle ci lui sera ajoutée

Dim UnePlage As Range
Dim DerniereLigne As Long
Dim Colonne As Long
Dim Comparaison As Boolean
Dim NomPlage As String

Set UnePlage = Plage

'Récupérer le nombre de ligne de la plage
DerniereLigne = StockNbLigne() 'macro qui récupère le numéro de la dernière ligne de la combobox

'Récupérer le numéro de la colonne de la plage de cellules
Colonne = UnePlage.Column

'Récupérer le nom déjà donné à la plage de cellules Plage:
NomPlage = Plage.Name

'Comparer la valeur de la saisie avec celles présentes dans la liste du contrôle
Comparaison = ComparerSaisieCombobox(Entree, Liste)

If Comparaison = True Then
'Mettre la valeur de l'entrée en dessous de la plage nommée
Cells(DerniereLigne + 1, Colonne) = Entree

'Supprimer le nom de la plage nommée
Call SupprimerNomPlage(Plage)

'Renommer la plage agrandie :

UnePlage.Resize(Plage.Rows.Count + 1).Name = NomPlage

End If

End Sub

***
Function ComparerSaisieCombobox(Saisie As String, Liste As Controls) As Boolean

Dim ControlIndex As Integer ' compteur de boucle
Dim NbLigne As Integer 'Nb ligne de la combobox
Dim ListeObjet As Object ' valeur déjà présente dans la combobox
Dim ValeurListe As String

'Récupérer le nombre de ligne de la combobox
NbLigne = Liste.ListCount

For ControlIndex = 0 To NbLigne - 1

' Récupérer la valeur (index (j)) de la combobox
Set ListeObjet = Liste.Item(ControlIndex)
ValeurListe = ListeObjet.Value

If Saisie Like ValeurListe Then

ComparerSaisieCombobox = True

Else
ComparerSaisieCombobox = False

End If

Next ControlIndex

End Function

****
Public Sub SupprimerNomPlage(PlageSupprimer As Range)
'
ActiveWorkbook.Names("PlageSupprimer").Delete

End Sub
Public Sub NommerPlage(PlageNommer As Range)

Dim Adresse As String

ActiveWorkbook.Names.Add Name:="PlageNommer", RefersToR1C1 _
:="adresse"
End Sub
***********
 

Chloulou

XLDnaute Occasionnel
Re : Mise à jour liste d'une combobox

j'ai modifié une ligne dans la macro ComparerSaisieCombobox
Set ListeObjet = Liste.Item(ControlIndex)
ValeurListe = ListeObjet.Value

est devenu

Set ListeObjet = Liste.Controls.Item(ControlIndex)
ValeurListe = ListeObjet.Value

maintenant ca ne donne plus l'erreur 13 mais rien ne se passe, la valeur n'est pas placé dans la liste, qui n'est donc pas redimendionnée.
 

Bebere

XLDnaute Barbatruc
Re : Mise à jour liste d'une combobox

bonjour ChLoulou
si tu as fait un copier/coller
il y a un espace Range("List eApplication") dans
Call RajoutEntreeListe(Worksheets("Listes").Range("List eApplication"), Application, UserForm1.ZoneApplication)

pour le reste un fichier serait le bien venu - de 50k .xls ou .zip

à bientôt
 

Chloulou

XLDnaute Occasionnel
Re : Mise à jour liste d'une combobox

le nom est correcte dans mon code, pas de pb la dessus.
Pour ce qui est du fichier, le voilà :
 

Pièces jointes

  • Copie de Essai.zip
    40.8 KB · Affichages: 42
  • Copie de Essai.zip
    40.8 KB · Affichages: 44
  • Copie de Essai.zip
    40.8 KB · Affichages: 46

jp14

XLDnaute Barbatruc
Re : Mise à jour liste d'une combobox

Bonjour

Ci joint le fichier avec un exemple

A tester et à modifier.

JP
 

Pièces jointes

  • Copie de Essai.zip
    39.8 KB · Affichages: 88
  • Copie de Essai.zip
    39.8 KB · Affichages: 76
  • Copie de Essai.zip
    39.8 KB · Affichages: 80

Discussions similaires

Réponses
12
Affichages
618