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 VBA : Sélectionner tout - Visualiser dans une fenêtre à part
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 VBA : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?