Simplifier l' écriture de cette macro !!!

Evelynetfrancois

XLDnaute Impliqué
Bonjour tout le forum !

Nettoyage de printemps..........!!

Sur presque chaque bouton j'ai ce genre de macro, qui fonctionne, mais qui me semble bien, ""lourde""
Est il possible, de l alléger en écriture

((Le principe de cette macro est de faire apparaître en bleu l'optionbutton cliqué
et de griser tous les autres qui se trouvent dans le même frame ))
MERCI pour tout !!!
E et F

Private Sub OptionButton13_Click()
Range("F7").Value = "Activité ergo"
Range("H23").Value = " Aucune livraisons"
Range("H25").Value = " "
Range("G25").Value = " "
If OptionButton13.Value = True Then
OptionButton13.Font.Bold = True
OptionButton13.ForeColor = &HC00000
OptionButton1.Font.Bold = True
OptionButton1.ForeColor = &H808080
OptionButton2.Font.Bold = True
OptionButton2.ForeColor = &H808080
OptionButton3.Font.Bold = True
OptionButton3.ForeColor = &H808080
OptionButton4.Font.Bold = True
OptionButton4.ForeColor = &H808080
OptionButton5.Font.Bold = True
OptionButton5.ForeColor = &H808080
OptionButton6.Font.Bold = True
OptionButton6.ForeColor = &H808080
OptionButton19.Font.Bold = True
OptionButton19.ForeColor = &H808080
OptionButton20.Value = False
OptionButton20.Font.Bold = True
OptionButton20.ForeColor = &H808080
OptionButton21.Value = False
OptionButton21.Font.Bold = True
OptionButton21.ForeColor = &H808080
OptionButton22.Value = False
OptionButton22.Font.Bold = True
OptionButton22.ForeColor = &H808080
OptionButton9.Value = False
OptionButton9.Font.Bold = True
OptionButton9.ForeColor = &H808080
OptionButton10.Value = False
OptionButton10.Font.Bold = True
OptionButton10.ForeColor = &H808080
OptionButton18.Value = False
OptionButton18.Font.Bold = True
OptionButton18.ForeColor = &H808080
TextBox4.SetFocus
End If
End Sub
 
C

Compte Supprimé 979

Guest
Re : Simplifier l' écriture de cette macro !!!

Bonjour,

Tu peux essaye d'utiliser un code comme celui-ci
Code:
Private Sub OptionButton13_Click()
  Range("F7").Value = "Activité ergo"
  Range("H23").Value = " Aucune livraisons"
  Range("G25,H25").Value = " "
  If OptionButton13.Value = True Then
    OptionButton13.Font.Bold = True
    OptionButton13.ForeColor = &HC00000
    ' Mettre à jour les options button
    Call MaJOptButton
    TextBox4.SetFocus
  End If
End Sub
Dans une Sub générale
Code:
Sub MaJOptButton()
  Dim I As Integer, TabOb() As String
  TabOb = Split("1,2,3,4,5,6,9,10,18,19,20,21,22", ",")
  For I = 0 To UBound(TabOb)
    With Me("OptionButton" & TabOb(I))
      If I > 8 And I <> 19 Then .Value = False
      .Font.Bold = True
      .ForeColor = &H808080
    End With
  Next I
End Sub
A voir si tu as des variations ;)

A+
 
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Simplifier l' écriture de cette macro !!!

Bonjour Evelyne et François, Bruno, bonjour le forum,

Une autre proposition :
Code:
Private Sub OptionButton13_Click()
Dim ctrl As Control
Range("F7").Value = "Activité ergo"
Range("H23").Value = " Aucune livraisons"
Range("H25").Value = " "
Range("G25").Value = " "
If OptionButton13.Value = True Then
    For Each ctrl In Controls
        If Left(ctrl.Name, 12) = "OptionButton" Then
            Select Case Mid(ctrl.Name, 13)
                Case 1, 2, 4, 5, 6, 9, 10, 18, 19, 20, 21, 22
                    ctrl.Font.Bold = True
                    ctrl.ForeColor = &HC00000
            End Select
        End If
    Next ctrl
    TextBox4.SetFocus
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Simplifier l' écriture de cette macro !!!

Bonjour à tous

En attendant un module de classe

Une variation sur le code de Roger ;)

(en comprenant la question différemment)

Code:
Private Sub OptionButton13_Click()
Dim ctrl As Control
[F7] = "Activité ergo"
[H23] = " Aucune livraisons"
[H25,G25] = Empty
With OptionButton13
If .Value = True Then
.Font.Bold = True
.ForeColor = &HC00000
    For Each ctrl In Controls
      If TypeOf ctrl Is MSForms.OptionButton Then
            Select Case Mid(ctrl.Name, 13)
                Case 1, 2, 4 To 6, 9, 10, 18 To 22
                ctrl.Enabled = False
            End Select
        End If
    Next ctrl
    TextBox4.SetFocus
End If
End With
End Sub
Le principe de cette macro est de faire apparaître en bleu l'optionbutton cliqué
et de griser tous les autres qui se trouvent dans le même frame

Evelyne et François

Donc ici Optionbutton13 doit être et les 12 autres grisés c'est ça ?
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Simplifier l' écriture de cette macro !!!

Robert, Saple1600, bonjour.

Je pense que vous avez mal lu le code d'Evelynetfrancois :eek:

Certains OptionButton ont leur valeur mise à False, de plus vous avez oublié L'OB 3 :D

A+
 

Staple1600

XLDnaute Barbatruc
Re : Simplifier l' écriture de cette macro !!!

Re

C'est pas moi, c'est Robert :D

(d'ailleurs j'ai copié son code )

Evelancois et Francine n'avaient qu'à joindre leur userfom déjà fait

Comme cela nous aurions su et nous n'aurions pas fauté.

PS: Bruno est plus vigilant que nous car il est plus plus jeune (l'heureux veinard).
 

ChTi160

XLDnaute Barbatruc
Re : Simplifier l' écriture de cette macro !!!

Salut Evelynetfrancois
Bonsoir le Fil
Bonsoir le Forum

Arff Rien que du lourd Lol , Histoire de vous saluer Tous

peut être un petit Module de classe Non ????? hein ? Comment ? lol

Bonne fin de Soirée
 

Evelynetfrancois

XLDnaute Impliqué
Re : Simplifier l' écriture de cette macro !!!

bonsoir BrunoM45 ,Robert ,Staple1600 ,ChTi160 merciiiii

bon là , y a matière , super , je vais étudier et adapter tout ça , à mes macros
j'ai deja adopté l ecriture des [F7] à la place des Range("F7").value , comme a ecrit Staple1600
pour le reste je vais y aller étape par étape

en tout cas un grand merci à vous tous !!!
bonne soirée ........
E et F
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 087 970
Membres
103 688
dernier inscrit
Amadou