CheckBox.BackColor dans une fonction VBA

Résolu
fabien25000 Messages postés 697 Statut Membre -  
fabien25000 Messages postés 697 Statut Membre -
Bonjour à tous,

Je manipule habituellement la VBA sur excel et je manque de connaissance sur le vocabulaire VBA Word et j'aurai besoin de vos lumières :

Je travaille sur un document Word qui a plusieurs dizaines de chekbox
Je souhaite que lorsque que je clic une première fois sur la checkbox le backcolor passe en vert, au deuxième clic le backcolor passe en orange , et au troisième clic le backcolor revienne à la couleur par défaut et que checkbox.value=False

J'ai réussi à écrire tout ça sur une checkbox, ça fonctionne comme je le souhaite :
Private Sub Test_Click()

    If test.Value = True Then
        If test.Value = True And test.BackColor = RGB(224, 128, 32) Then
            test.BackColor = vbWhite
            test.Value = False
        Else
            test.BackColor = vbGreen

        End If
    Else
        If test.BackColor = vbGreen Then test.BackColor = RGB(224, 128, 32)

    End If

End Sub

mais je n'arrive pas à trouver la synthaxe pour rendre ce code générique dans une fonction pour n'avoir qu'a appeler la fonction dans chaque chekbox.
voici ce que j'ai essayé suite à mes recherche sur internet et qui ne fonctionne pas :

Private Sub Test_Click()

Color ("Test")

End Sub

Function Color(varTest)

    If ThisDocument.FormFields(varTest).CheckBox.Value = True Then
        If ThisDocument.FormFields(varTest).CheckBox.Value = True And ThisDocument.FormFields(varTest).BackColor.RGB = RGB(224, 128, 32) Then
            ThisDocument.FormFields(varTest).BackColor = vbWhite
            ThisDocument.FormFields(varTest).CheckBox.Value = False
        Else
            ThisDocument.FormFields(varTest).BackColor = vbGreen
        End If
    Else
        If ThisDocument.FormFields(varTest).BackColor = vbGreen Then
            ThisDocument.FormFields(varTest).BackColor = RGB(224, 128, 32)
        End If

    End If

End Function


merci d'avance pour vos conseils et votre temps

Configuration: Windows / Chrome 83.0.4103.97


--
Quand on ne dispose que d'un marteau tout les problèmes ressemblent à un clou

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    C'est, très exactement, la même façon de coder qu'avec Excel.
    Tu passes la CheckBox en paramètre de ta fonction, pas son nom...

    Option Explicit
    
    Private Sub CheckBox1_Click()
        Colorie CheckBox1
    End Sub
    Private Sub CheckBox2_Click()
        Colorie CheckBox2
    End Sub
    
    Private Sub Colorie(C As MSForms.CheckBox)
        With C
            If .Value = True Then
                If .Value = True And .BackColor = RGB(224, 128, 32) Then
                    .BackColor = vbWhite
                    .Value = False
                Else
                    .BackColor = vbGreen
                End If
            Else
                If .BackColor = vbGreen Then .BackColor = RGB(224, 128, 32)
            End If
        End With
    End Sub

    1
    1. fabien25000 Messages postés 697 Statut Membre 59
       
      Merci !
      0