Mise à jour liste d'une combobox

  • Initiateur de la discussion Initiateur de la discussion Chloulou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
***********
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
278
Réponses
3
Affichages
233
Réponses
4
Affichages
342
Retour