CheckBox.BackColor dans une fonction VBA
Résolu
fabien25000
Messages postés
697
Statut
Membre
-
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 :
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 :
merci d'avance pour vos conseils et votre temps
--
Quand on ne dispose que d'un marteau tout les problèmes ressemblent à un clou
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
-
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