Surligner texte dans un textbox
Bonjour,
Je reprends ce vieux fil.
Sur une feuille il y a un ComboBox. À côté de celui-ci un TextBox.
Je choisis un item dans le ComboBox, automatiquement le nombre (formaté) qui est dans le TextBox est substitué par "0,00%". Je voudrais que ce résultat soit surligné pour y entrer immédiatement un nouveau pourcentage.
Dans le post#2, zazaraignée propose :
Code:
1 2 3
| MonTextBox.SelStart = 0
MonTextBox.SelLength = Len (MonTextBox.Text)
MonTextBox.SetFocus |
J’ai essayé d’adapter cette solution à ma macro (qui marche très bien) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub ChangeItem(ComboName$)
'Quand on change d'item dans la liste du ComboBox, le pourcentage s'annule dans le TextBox et le CheckBox est décoché s'il l'était
Dim suf As Byte, tb As MSForms.TextBox, cb As Object, i As Byte, ad As Double
suf = ExtractNumber(ComboName) 'suffixe du ComboBox
Set tb = ActiveSheet.OLEObjects("TextBoxPP" & suf).Object 'TextBox "TextBoxPP"
tb.Value = Format(0, "##,##0.00""%""") 'affiche 0 + formatage (--> 0,00%)
tb.Activate 'MARCHE
' tb.SelStart = 0 '
' tb.SelLength = 4 'NE MARCHE PAS
' tb.SetFocus '
Set cb = ActiveSheet.OLEObjects("CheckBoxPP" & suf).Object 'CheckBox "CheckBoxPP"
If cb Then 'le CheckBox correspondant au ComboBox est coché
cb = 0 'le CheckBox est décoché
CheckSolvants = CheckSolvants - 1 'et hop ! 1 solvant checké en moins
pourcents(suf) = 0 'le pourcentage sera forcément 0 dans le tableau dynamique "pourcents()"
If CheckSolvants > 0 Then
For i = 1 To NbSolvants + 1 '(Base 0)
Set cb = ActiveSheet.OLEObjects("CheckBoxPP" & i).Object 'CheckBox "CheckBoxPP"
If cb Then ad = ad + pourcents(i) 'repérage des CheckBox toujours cochés et addition de leurs pourcentages
Next
Set tb = ActiveSheet.OLEObjects("TextBox_AddPourcent").Object 'TextBox "TextBox_AddPourcent"
tb.Value = Format(ad, "##,##0.00""%""") 'le TextBox "TextBox_AddPourcent" affiche la somme de tous les pourcentages toujours checkés + mise en forme (suffixe "%")
End If
End If
End Sub |
Ça ne marche pas...
Comment s'y prendre ?
Surligner le contenu d'un TextBox sur une feuille depuis un ComboBox
Bonjour,
Sur une feuille il y a un ComboBox. À côté de celui-ci un TextBox.
Je choisis un item dans le ComboBox, automatiquement le nombre (formaté) qui est dans le TextBox est substitué par "0,00%". Je voudrais que ce résultat soit surligné pour y entrer immédiatement (sans avoir à cliquer sur le TextBox) un nouveau pourcentage.
Sur ce forum, j'avais vu :
Code:
1 2 3
| MonTextBox.SelStart = 0
MonTextBox.SelLength = Len (MonTextBox.Text)
MonTextBox.SetFocus |
J’ai essayé d’adapter cette solution à ma macro (qui marche très bien) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub ChangeItem(ComboName$)
'Quand on change d'item dans la liste du ComboBox, le pourcentage s'annule dans le TextBox et le CheckBox est décoché s'il l'était
Dim suf As Byte, tb As MSForms.TextBox, cb As Object, i As Byte, ad As Double
suf = ExtractNumber(ComboName) 'suffixe du ComboBox
Set tb = ActiveSheet.OLEObjects("TextBoxPP" & suf).Object 'TextBox "TextBoxPP"
tb.Value = Format(0, "##,##0.00""%""") 'affiche 0 + formatage (--> 0,00%)
tb.Activate 'MARCHE
' tb.SelStart = 0 '
' tb.SelLength = 4 'NE MARCHE PAS
' tb.SetFocus '
Set cb = ActiveSheet.OLEObjects("CheckBoxPP" & suf).Object 'CheckBox "CheckBoxPP"
If cb Then 'le CheckBox correspondant au ComboBox est coché
cb = 0 'le CheckBox est décoché
CheckSolvants = CheckSolvants - 1 'et hop ! 1 solvant checké en moins
pourcents(suf) = 0 'le pourcentage sera forcément 0 dans le tableau dynamique "pourcents()"
If CheckSolvants > 0 Then
For i = 1 To NbSolvants + 1 '(Base 0)
Set cb = ActiveSheet.OLEObjects("CheckBoxPP" & i).Object 'CheckBox "CheckBoxPP"
If cb Then ad = ad + pourcents(i) 'repérage des CheckBox toujours cochés et addition de leurs pourcentages
Next
Set tb = ActiveSheet.OLEObjects("TextBox_AddPourcent").Object 'TextBox "TextBox_AddPourcent"
tb.Value = Format(ad, "##,##0.00""%""") 'le TextBox "TextBox_AddPourcent" affiche la somme de tous les pourcentages toujours checkés + mise en forme (suffixe "%")
End If
End If
End Sub |
Ça ne marche pas...
Comment s'y prendre ?