IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Surligner texte dans un textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut 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 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 ?

  2. #2
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut 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 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 ?

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    On parle de vb6 et antérieur ou de vb.net ?

    Sinon, en recherchant dans le TextBox le mot a substituer avec la commande InStr([start, ]string1, string2[, compare]) tu obtiens le Start dans le TextBox se qui te permet de faire une sélection par code.
    Ce qui devrai donner plus ou moins
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonTextBox.SelStart = InStr(0,MonTextBox.Text,ComboBox.Text,1)
    MonTextBox.SelLength = Len (ComboBox.Text)
    MonTextBox.SetFocus
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Avec des contrôles de type ActiveX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
        With ThisWorkbook.Sheets(1).Shapes("TextBox1").OLEFormat.Object
            .Activate
            With .Object
                .Value = "ABCDEFGHIJ"
                .SelStart = 3
                .SelLength = 4
            End With
        End With
    End Sub
    Cdt

  5. #5
    Membre actif
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Bonjour,

    Merci, ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Sélection de texte dans un textbox
    Par olbi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/08/2014, 10h26
  2. [VB.NET] Couleur du texte dans un TextBox désactivé
    Par Cricket dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/10/2013, 22h16
  3. Sauvegarder et charger du texte dans une Textbox
    Par kazylax dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2007, 12h39
  4. Alignement vertical de texte dans un TextBox
    Par lio33 dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 11/06/2007, 14h56
  5. Colorer texte dans une textbox
    Par metatron dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 27/09/2006, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo