Contrôles ActiveX - Boutons et BackColor

Vinc

XLDnaute Junior
Bonjour, je suis en train de faire un formulaire sous Word 2007 avec des boutons activeX.

J'ai plusieurs bouton avec la même fonction à savoir : (Couleur d'origine des boutons : Jaune)
-Je clique 1 fois dessus il change son BackColor en Bleu
-Je clique une deuxième fois dessus il change son BackColor en Rouge
-Je clique une troisième fois dessus il change son BackColor en Jaune

Je souhaite réaliser un fonction qui me fera gagner du temps et des lignes...

J'ai fais cette fonction mais elle ne fonctionne pas, quelqu'un pourrait m'aider ?... Merci

Code:
Function Couleur(CouleurOri As OLE_COLOR)

If CouleurOri = 8454143 Then 'Jaune
CouleurOri = 16711680 'Bleu
Exit Function
ElseIf CouleurOri = 16711680 Then 'Bleu
CouleurOri = 255        'Rouge
Exit Function
ElseIf CouleurOri = 255 Then 'Rouge
CouleurOri = 8454143
Exit Function
End If

End Function

Et appel de la function :

Code:
Private Sub CommandButton9_Click()

Me.CommandButton9.BackColor = Couleur(Me.CommandButton9.BackColor)

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Contrôles ActiveX - Boutons et BackColor

Bonjour
La valeur retournée par une fonction doit être affectée au nom de la fonction, pas à son paramètre.
Si vous voulez l'affecter à son paramètre écrivez une Sub.
Ce serait d'ailleurs mieux dans votre cas si vous déclarez son paramètre As CommandButton
Autre chose: vous pouvez spécifier des valeur Hexadécimales en les faisant précéder de "&h"
P.S. Votre jaune est en fait un jaune pâle (&H80FFF) et non le jaune normal ($HFFFF)
Cordialement
 
Dernière édition:

Vinc

XLDnaute Junior
Re : Contrôles ActiveX - Boutons et BackColor

J'ai modifié la fonction comme ci-dessous :

Code:
Function Couleur(CouleurOri As String)

If CouleurOri = 8454143 Then 'Jaune
Couleur = 16711680
Exit Function
ElseIf CouleurOri = 16711680 Then 'Bleu
Couleur = 255
Exit Function
ElseIf CouleurOri = 255 Then 'Rouge
Couleur = 8454143
Exit Function
End If

End Function

Et pour appeler la fonction :
Code:
Me.CommandButton9.BackColor = (Couleur(Me.CommandButton9.BackColor))

Merci "Dranreb", je ne sais pas si l'exemple ci-dessus est vraiment ce que tu m'as expliqué... Mais il fonctionne....
 

Dranreb

XLDnaute Barbatruc
Re : Contrôles ActiveX - Boutons et BackColor

C'est bien ce que j'expliquais au début.
La propriété BackColor est un entier Long, pas un String.
Ensuite j'expliquais en partie qu'on aurait aussi pu faire, en reprenant votre bizarre jaune pâle 8454143 au lieu du jaune normal 65535:
VB:
Sub ChangerCouleur(Bouton As Control)
Rem. Permutation Jaune pâle -> bleu normal -> rouge normal
Select Case Bouton.BackColor
   Case &H80FFFF: Bouton.BackColor = &HFF0000
   Case &HFF0000: Bouton.BackColor = &HFF
   Case &HFF:     Bouton.BackColor = &H80FFFF
   End Select
End Sub
Et pour appeler la procédure :
VB:
ChangerCouleur Me.CommandButton9
Cordialement.
 

Statistiques des forums

Discussions
312 489
Messages
2 088 870
Membres
103 980
dernier inscrit
grandmasterflash38