OVH Cloud OVH Cloud

combobox avec nombre ou texte

11 réponses
Avatar
Andrée et Romuald
Bonsoir tout le monde
>
> Voici mon probleme
> Avec le code ci joint ,lorsque la liste est composée de "nombre" tout
> fonctionne sans le moindre souci mais
>
> lorsque la liste est composée de "texte" alors
> lorsque j'ai selectionnéuné une cellule(cellule A3 par exemple)
> que je lui attibue le second élément du menu déroulant ("bonjour" par
> exemple) alors ok
> mais lorsque je veux après avoir selectionné une autre cellule
> (b32 par exemple)ré-attribué directement après "bonjour" du menu déroulant
> alors je suis obligé de selectionné et attribué un autre élément ("salut"
> par exemple)du menu déroulant et après encore resélectionné le premier
> élément"bonjour".
>
> comment cela se fait il ?
> comment cela peut il etre resolu ??
> j'ai essayé en changeant le type de variable mais cela ne va pas
> voici le code que j'utilise
>
> Private Sub ComboBox1_Click()
> ActiveCell.Value = Me.ComboBox1.Value
> End Sub
> Private Sub ComboBox1_GotFocus()
> Dim Rg As Range, Tblo As Variant
> With Worksheets("Données")
> Set Rg = .Range("C26:C" & .Range("C7").End(xlUp).Row)
> Tblo = Rg
> End With
> Me.ComboBox1.List = Tblo
> End Sub
> en esperant avoir ete clair
> merci pour votre aide
>
> Andrée et Romuald
>
>

1 réponse

1 2
Avatar
Andrée et Romuald
bonsoir
pour ceux et celles qui seraient interessé,
apres beaucoup de recherche a gauche et a droite voici le resultat qui me
conviens le mieux

1 : sur la feuille concernée
'mise en place d'un titre dans le menu contextuel(clic droit de la souris)

Private Sub Worksheet_Activate()'activate car je ne veux que sur cette
feuille la modification du menu contextuel
With Application.CommandBars("cell").Controls.Add(msoControlButton)
.Caption = " + ajout"
End With
For Each cmddroit In Application.CommandBars("cell").Controls
If cmddroit.Type = msoControlComboBox Then cmddroit.Delete
Next cmddroit
Set myControl = CommandBars("cell").Controls.Add(Type:=msoControlComboBox,
Before:%)
With myControl
For X = 1 To 25
.AddItem Text:Îlls(X, 3), Index:=X
Next
.ListIndex = 1
.DropDownLines = 6
.DropDownWidth = 75
.ListHeaderCount = 0
.Tag = "menutrois"
.OnAction = "plusajout"
End With
End Sub
Private Sub Worksheet_Deactivate()'meme explication que "activate"
Application.CommandBars("Cell").Reset
End Sub

2:sur un module separé

Sub plusajout()
Dim troisbtn As CommandBarComboBox, strTxt As String
Set troisbtn = CommandBars("cell").FindControl(, , "menutrois")
strTxt = troisbtn.Text
ActiveCell = ActiveCell + "" + strTxt
End Sub

merci à JLuc pour son aide
bonne soirée et bon W-E a tout le monde
ANdrée et Romuald

"Andrée et Romuald" a écrit dans le message de news:
eiE9$
Bonsoir tout le monde

Voici mon probleme
Avec le code ci joint ,lorsque la liste est composée de "nombre" tout
fonctionne sans le moindre souci mais

lorsque la liste est composée de "texte" alors
lorsque j'ai selectionnéuné une cellule(cellule A3 par
exemple)
que je lui attibue le second élément du menu déroulant ("bonjour" par
exemple) alors ok
mais lorsque je veux après avoir selectionné une autre cellule
(b32 par exemple)ré-attribué directement après "bonjour" du menu
déroulant
alors je suis obligé de selectionné et attribué un autre élément ("salut"
par exemple)du menu déroulant et après encore resélectionné le premier
élément"bonjour".

comment cela se fait il ?
comment cela peut il etre resolu ??
j'ai essayé en changeant le type de variable mais cela ne va pas
voici le code que j'utilise

Private Sub ComboBox1_Click()
ActiveCell.Value = Me.ComboBox1.Value
End Sub
Private Sub ComboBox1_GotFocus()
Dim Rg As Range, Tblo As Variant
With Worksheets("Données")
Set Rg = .Range("C26:C" & .Range("C7").End(xlUp).Row)
Tblo = Rg
End With
Me.ComboBox1.List = Tblo
End Sub
en esperant avoir ete clair
merci pour votre aide

Andrée et Romuald








1 2