Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008
-
13 juil. 2004 à 10:07
Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008
-
19 juil. 2004 à 10:10
Bonjour,
j'ai une liste dans les cellules A1: A3.
J'ai créé un combobox qui reprend la liste + une ligne vide afin de permettre d'ajouter quelque chose.
Le code sur Combobox_click() est le suivant :
LastCell = Range ("A1").End(Xldown).Offset(1,0).Adress
Combobox.ListFillRange = "A1:" & LastCell
Ce que je voudrais c'est lorsque l'utilisateur se positionne sur le dernier choix de la combobox (donc une cellule vide) et qu'il y ajoute quelque chose, je retrouve son introduction dans la dernière cellule de ma liste, (dans mon exemple en A4).
Cela permettrait à l'utilisateur de ne pas devoir aller modifier la liste mais de pouvoir d'une manière dynamique faire des ajouts qui seraient repris automatiquement pour ses prochaines introductions.
Merci de votre aide car je cherche la solution depuis déjà quelques jours.
madbob
Messages postés285Date d'inscriptiondimanche 14 décembre 2003StatutMembreDernière intervention13 mars 2012 13 juil. 2004 à 16:21
Tu avais vraiment fait le plus gros
Si j'ai compris, tu peux essayer ça :
'* recupération de l'indice de la ligne + incrément pour la blanche
LastCell = Range("A1").End(xlDown).Row + 1
ComboBox1.ListFillRange = "A1:A" & LastCell
Pour le code il vaut mieux que tu le mettes dans l'evement change de ta feuille (Worksheet_SelectionChange) car sinon tu peux avoir des écarts dans la mise à jour graphique de ta liste.
madbob
Messages postés285Date d'inscriptiondimanche 14 décembre 2003StatutMembreDernière intervention13 mars 2012 14 juil. 2004 à 12:46
J'avais peut être pas compris... Tu veux peut-être mettre à jour depuis la combobox.
Je sais faire comme ça :
je detecte la validation d'une nouvelle chaine de caractères dans la combobox et j'ajoute une nouvelle cellule contigue de la feuille.
L'evênement "change" de la feuille1 détecte l'ajout à la feuille et recharge la combo avec la nouvelle valeur ce qui donne
'* Détection de l'action valider (entree ) sur la combobox
Private Sub CB_LISTE1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim L_Chaine As String
Dim L_position As Integer
'* si l'action est entrée
If KeyCode = 13 Then
L_position = Me.CB_LISTE1.ListIndex
'* si j'ai bien ajouté une valeur des fois qu'on appui sur entrée alors qu'il s'agit d'une valeur sélectionnée...
If L_position = -1 Then
'* là il faut incrémenter
lastcell = Range("A1").End(xlDown).Row + 1
[blue] '* Récupération de la valeur de la combo
L_Chaine = Me.CB_LISTE1.Value
Range("A" & lastcell).Value = L_Chaine
End If
End If
End Sub
'* Mise à jour de la combo après ajout d'un nouvelle valeur
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lastcell = Range("A1").End(xlDown).Row
Me.CB_LISTE1.ListFillRange = "A1:A" & lastcell
End Sub
NB : Tu n'as pas besoin de gérer une ligne blanche pour ta combo elle le fait très bien toute seule
madbob
Messages postés285Date d'inscriptiondimanche 14 décembre 2003StatutMembreDernière intervention13 mars 2012 14 juil. 2004 à 15:18
Super.... l'important c'est d'y arriver.
Si je puis me permettre un conseil, la gestion du code au travers la gestion evennementielle des focus n'est pas une très bonne chose. Cela induit souvent des effets pervers innatendus et dans certain cas des boucles san fin, voire des problème lors du débugage.
Mais l'élément le plus important est que le lose focus pour valider une action de saisie qui n'est pas un élement sûr, il faut pour moi un acte de validation conscient et définitif plutôt qu'un click sur une cellule de la feuille ou ailleurs.