EXCEL Combox : impossible de sélectionner un texte hors liste
Bonjour
J’utilise Excel 10 sur Windows7 Home Premium. Mon problème est simple.
J’utilise une combox (nommée ici Cbx_Tiers) dont le ListFillRange est constitué
par une liste de noms (1 seule colonne). Cette liste se trouve sur une autre feuille (Sheet("TiersList") et est définie par le nom : Name = ‘EchTiersDirList’. Le paramètre MatchRequired de la Cbx = False.
Cette Combox fonctionne parfaitement tant que je sélectionne un sujet de la liste.
Je voudrais pouvoir saisir un nouveau nom, l’utiliser et qu’il soit rajouté à la liste existante. Mais cela ne fonctionne pas ! En saisissant un nouveau nom, le programme passe à Cbx_TiersDirlist.Change dès la 1ère lettre et n'affiche que celle-ci.
J’ai introduit le code suivant dans la procédure Cbx_TiersDirlist.Change:
Code:
1 2 3
| If Cbx_TiersDirList.ListIndex = -1 Then
Cbx_TiersDirList.AddItem Cbx_TiersDirList.Value
End If |
Le message d’erreur est invariablement: Run-time Error ‘70’ Permission denied,
même si j’introduis le code ‘Cbx_TiersDirList.clear’ avant la ligne ‘.AddItem’.
Quelle est la bonne solution ?
Merci
:calim2:
Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste
Bonjour Unparja
Merci de ta réponse.
Cela veut dire que si un nouveau nom est ajouté directement dans la ComboBox, il faut l'ajouter séparément à la fin de la liste servant de référence au 'ListFillRange' de la ComboBox. Donc le fait d'ajouter un nouveau nom ne modifie pas automatiquement la ListFillRange liste.
Dans mon cas, le nom (Name) de cette liste est réajusté automatiquement. Donc pas besoin ici de le réajuster.
Je vais tester cela dès que possible et te ferais part de mes résultats.
Merci, Jacksun
Par défaut EXCEL Combox : impossible de sélectionner un texte hors liste
Citation:
Envoyé par
Jacksun
Bonjour Unparja
Merci de ta réponse.
Cela veut dire que si un nouveau nom est ajouté directement dans la ComboBox, il faut l'ajouter séparément à la fin de la liste servant de référence au 'ListFillRange' de la ComboBox. Donc le fait d'ajouter un nouveau nom ne modifie pas automatiquement la ListFillRange liste.
Dans mon cas, le nom (Name) de cette liste est réajusté automatiquement. Donc pas besoin ici de le réajuster.
Je vais tester cela dès que possible et te ferais part de mes résultats.
Merci, Jacksun
Bonjour,
Je n'ai pas pu aller plus loin. Toujours impossible de saisir un nouveau mot dans la ComboBox car, comme je le mentionnais dans ma demande originale (ci-dessous) la ComboBox n'accepte que la 1ère lettre du nouveau mot...
Citation:
Je voudrais pouvoir saisir un nouveau nom, l’utiliser et qu’il soit rajouté à la liste existante. Mais cela ne fonctionne pas ! En saisissant un nouveau nom, le programme passe à Cbx_TiersDirlist.Change dès la 1ère lettre et n'affiche que celle-ci.
Je n'ai pas trouvé quel(s) paramètre(s) de la ComboBox l'empêchent d'accepter le mot en entier? Où est mon erreur?
Jacksun
EXCEL Combox : impossible de sélectionner un texte hors liste [Résolu]
J'ai bien dû admettre qu'une ComboBox ne permet pas l'ajout automatique d'un nouvel élément.
Suite à vos informations qui m'ont été indispensables, j'ai procédé comme suit:
J'ai créé une Textbox" TB_Tiers" à côté de la ComboBox "CBx_Tiers" existante et ajouté la ligne "Nouveau ===>"
à la liste RowSource "EchTiersList" existante avec le code suivant dans la partie "Change" de la ComboBox:
Code:
1 2 3 4 5 6 7 8 9 10 11
| Private Sub Cbx_Tiers_Change()
If Me.Cbx_Tiers = "<=Nouveau=>" Then
Me.Cbx_Tiers.Enabled = False
With Me.TB_Tiers
.Enabled = True
.Visible = True
.Value = ""
.SetFocus
End With
End If
End Sub |
de cette façon un nouvel élément peut être saisi dans la TextBox et ajouté à la liste "EchTiersList" de la RowSource
la liste "EchTiersList" se trouvant sur la page "EchList"
par une procedure dans Private Sub TB_Tiers_AfterUpdate()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub TB_Tiers_AfterUpdate()
'Check for presence of the new Tiers in the existing EchTierList
If UF21_Saisir.TB_Tiers <> "" Then
TiersPresent = False
For x = 3 To 19 'To LastTiersListRow
If Sheets("TiersList").Cells(x, 2) = UF21_Saisir.TB_Tiers Then
TiersPresent = True
End If
Next
If Not TiersPresent Then
resp = MsgBox("Ajouter ce Tiers à la liste des Tiers?", vbYesNo)
If resp = vbYes Then ' (6)
'Add Tiers to EchTiersList
Call Update_EchTiersList
Call Mod_Echéancier.SortTiers
Sheets("TiersList").Visible = False
End If
End If
End If
End Sub |
Je te remercie toi et Unparia de vos bons conseils qui m'ont été très utiles et indispensables.
Ce cas est ainsi résolu, mais je regrette de ne pas avoir découvert le tag "Résolu" à gauche en bas de page ni ailleurs.
:lol: