OptionButton pour passer en GRAS

Résolu
Bonjour a tous et toutes , Forum



j'ai un UserForm1 avec un OptionButton19 ainsi qu'une Zone (B2:F17) de cellule sur la
feuille excel 2007 ici pour essai.

Je souhaiterai svp que lorsque je click sur le bouton que cela passe le Fond du bouton en vert quand c'est cliqué et Rouge quand il n'ai plus cliqué

Je résume :

bouton décoché = Fond bouton en Rouge
bouton coché = Fond en vert

et bien l'action a générer est de passer en GRAS un mot de la zone (B2:F17) après avoir sélectionner bien sur la cellule qui contient le mot de la feuille a modifier.

je vous remercie de votre temps ainsi que de votre aide

Bon W-end a tous

Raymond

10 réponses

  1. Bonjour,

    Il faut soit un deuxieme Bouton Option ou un peu de code sur un evenement pour "decocher" un bouton Option.

    Couleur Fond:

    Private Sub OptionButton1_Click()
    OptionButton1.BackColor = vbGreen
    End Sub

    Private Sub OptionButton2_Click()
    OptionButton1.BackColor = vbRed
    End Sub

    Si vous ne voulez pas de deuxieme Bouton Option ou pas de code supplementaire, prenez une case a cocher

    Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    CheckBox1.BackColor = vbGreen
    Else
    CheckBox1.BackColor = vbRed
    End If
    End Sub

    Bonne suite
    1. Bonjour, f894009,

      Merci pour ta réponse et le petit code, c'est sympa

      Bon pour la couleur, c'est bon ça marche, effectivement je pense qu'un CheckBox devrai faire l'affaire

      Je mets quoi svp comme code pour passer en GRAS le mot dans la cellule choisie

      car si je click ca passera le mot en gras mais is je reclick le mot repassera en normal

      je ne sais pas trop comment faire

      Merci de ton aide je te souhaite un bon W-end

      Cordialement Ray
      1. Re,

        Private Sub CheckBox1_Click()
        'test le nom de la feuille et dans la plage de cellule: B2:F17
        If ActiveSheet.Name = "Feuil1" And _
        (ActiveCell.Row < 18 And ActiveCell.Row > 1) And _
        (ActiveCell.Column < 7 And ActiveCell.Column > 1) Then

        If CheckBox1.Value = True Then
        'Passage en caractere GRAS
        With ActiveCell.Font
        .Bold = True
        End With
        CheckBox1.BackColor = vbGreen
        Else
        'Passage en caractere NON GRAS
        With ActiveCell.Font
        .Bold = False
        End With
        CheckBox1.BackColor = vbRed
        End If
        End If
        End Sub

        Bonne suite
        1. Re

          Merci beaucoup, j'ai mis un checkbox comme conseillé, ça fonctionne très bien.

          Serait'il possible svp de faire en sorte que cela fonctionne également avec plusieurs

          cellules sélectionnées Ex: E5:E10

          je ne sais pas la si c'est possible ???

          Merci a toi ici a Rouen soleil enfin

          Raymond
          1. Re,

            Private Sub CheckBox1_Click()
            'test le nom de la feuille et dans la plage de cellule: B2:F17
            If ActiveSheet.Name = "Feuil1" And _
            (ActiveCell.Row < 18 And ActiveCell.Row > 1) And _
            (ActiveCell.Column < 7 And ActiveCell.Column > 1) Then
            adress = Selection.Address(0, 0)

            If CheckBox1.Value = True Then
            'Passage en caractere GRAS
            Range(adress).Font.Bold = True
            CheckBox1.BackColor = vbGreen
            Else
            'Passage en caractere NON GRAS
            Range(adress).Font.Bold = False
            CheckBox1.BackColor = vbRed
            End If
            Else
            MsgBox ("Selection en dehors de la plage")
            End If
            End Sub

            Vous pouvez selectionnes des cellules consecutives ou non.
            Le test cellules en dehors de la plage n'est plus vrai a 100%, il faudrait le sophistiquer un peu.

            Bonne suite
            1. Re f894009

              Merci pour la modification ça fonctionne très bien.

              Rajouter juste un Dim pour variable Adress et changer nom de la feuille normal.

              Question svp: Par rapport a ce que tu me dit ci-dessous

              Pour info: ma plage sera environ celle d'un écran, pas encore déterminer pour l'instant

              Le test cellules en dehors de la plage n'est plus vrai a 100%, il faudrait le sophistiquer un peu.

              Ca serait embètant de sophistiquer ou pas, je vois pas trop ou tu veux en venir

              Tu peux m'expliquer un peu svp

              et si tu saurai me faire , ça m'interresserai aussi, un plus pour mon programme

              Merci pour ton aide a plus tard

              Raymond
              1. Re,

                Si vous avez des cellules en dehors de votre plage (B2:F17) ou il y a du texte ou autres info, cela eviterait de modifier le style d'ecriture de ces cellules.
            2. Re

              Merci pour les infos, j'ai estimé que ma zone de travail s'étendra environ

              de A1:Z45 j'ai un écran 22 pouces.

              Voila donc si on peux améliorer votre code, je suis preneur pour la sophistiquation

              Merci pour le coup de main.

              Bonne après midi

              Raymond
              1. Re,

                Private Sub CheckBox1_Click()
                Dim adress, Cellule As Range
                'test le nom de la feuille et dans la plage de cellule: A1:Z45
                If ActiveSheet.Name = "Feuil1" Then
                'test cellule dans la plage
                For Each Cellule In Selection
                If Cellule.Row > 45 Or Cellule.Column > 26 Then
                CheckBox1.Value = False
                CheckBox1.BackColor = &H8000000F
                Exit Sub
                End If
                Next Cellule
                adress = Selection.Address(0, 0)
                Cells(20, 1) = Selection.Address(0, 0)
                If CheckBox1.Value = True Then
                'Passage en caractere GRAS
                Range(adress).Font.Bold = True
                CheckBox1.BackColor = vbGreen
                Else
                'Passage en caractere NON GRAS
                Range(adress).Font.Bold = False
                CheckBox1.BackColor = vbRed
                End If
                Else
                MsgBox ("Pas la bonne Feuille!!!!")
                End If
                End Sub

                Bonne suite
                1. Salut f894009

                  Merci beaucoup pour le code, c'est très gentil, alors ça fonctionne bien

                  juste svp une petite modification car un truc ne va pas bien

                  quand je sélectionne une ou plusieurs cellules, je click sur le CheckBox (GRAS)
                  ça fonctionne le TEXTE passe en GRAS et le bouton en vert, jusqu'a la c'est bon.

                  mais quand je désélectionne le bouton reste vert, ça c'est pas bon !!

                  il faudrai svp que lorsque je désélectionne le bouton doit repasser en Rouge
                  et donc près pour une nouvelle opération

                  Quand rien sélectionner bouton égal Rouge

                  Après ce doit ètre bon pour moi

                  Merci a toi a plus tard

                  Raymond
                  1. Bonjour f894009

                    J'ai trouver pour le dernier soucis j'ai mis au bon endroit de mon programme un "CheckBox1.Value = True" pour désactiver quand il ni a plus de sélection de cellules.

                    Donc la cela fonctionne très bien maintenant

                    Me reste a te remercier de ton aide ainsi que pour les codes que tu m'a fait

                    je te souhaite un bon Dimanche et encore merci a toi

                    Cordialement Raymond