Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 16h13   #1
Invité de passage
 
Homme François
Consultant fonctionnel
Inscription : décembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme François
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : décembre 2011
Messages : 1
Points : 0
Points : 0
Par défaut Changer la couleur de fond d'un formulaire

Bonjour,

Je fais des petits exercices pour m'initier à VBA à partir d'un bouquin (VBA pour excel: Créez des applications professionnelles)
L'un d'entre eux consister a créer un boutor un formulaire et de lui associer une macro qui permet de changer la couleur de fond de ce formulaire.

Ci-dessous: la macro de la correction.

Elle ne marche pas, je rencontre l'erreur suivante:
Citation:
"erreur d'éxécution "380"
Impossible de définir la propriété backColor. Valeur de propriété non valide"
La ligne suivante du code est surlignée en erreur
"fBoitesWindows.BackColor = NewColor"
Pouvez vous m'aider à comprendre ce problème?

Merci par avance.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
Private Declare Function choosecolor Lib "comdlg32.dll" Alias _
"ChooseColorA" (ByRef pChoosecolor As choosecolor) As Long
 
Private Type choosecolor
lstructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
flags As Long
lCustdata As Long
lpfn As Long
lpTemplateName As String
End Type
 
Private Function ShowColor() As Long
Dim ChooseColorStructure As choosecolor
Dim CustColor(16) As Long
Dim lReturn As Long
Dim Hwnd As Variant
Dim CC_ANYCOLOR As Variant
With ChooseColorStructure
.lstructSize = Len(ChooseColorStructure)
.hwndOwner = Hwnd
.hInstance = 0
.lpCustColors = CC_ANYCOLOR
.flags = 0
End With
If choosecolor(ChooseColorStructure) = 0 Then
ShowColor = ChooseColorStructure.rgbResult
Else
ShowColor = -1
End If
End Function
 
Private Sub bCouleurs_Click()
Dim NewColor As Long
NewColor = ShowColor
If NewColor =-1 Then
fBoitesWindows.BackColor = NewColor
End If
End Sub
N00b_VBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 17h38   #2
Membre régulier
 
Inscription : janvier 2003
Messages : 254
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 254
Points : 76
Points : 76
Bonjour,
Perso, je pense que tu devrais tester en debug <F8> ta fonction
ShowColor().

Sinon pour changer la couleur d'un UserForm ce n'est que changer
la propriété BackColor de ton userform. (tu peux le faire dans l'éditeur)
ou comme cela.

Code :
1
2
3
Private Sub UserForm_Initialize()
    UserForm1.BackColor = &HFFFF80
End Sub
Je te conseil de commencer par faire simple. Va voir le site de Jacques Boisgontier : http://boisgontierj.free.fr/
Bon courage.
comme de bien entendu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 20h05   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour
je trouve que pour débuter tu t'attaque a une function relativement complexe
d'autant plus qu'elle utilise les api

je serait toi je commencerais par le début

enfin cela dit

voici la fonction dans un module standard
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
Option Explicit
Private Declare Function ChooseColorA Lib "comdlg32.dll" (pChoosecolor As tChooseColor) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Type tChooseColor
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As String
    flags As Long
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Public la_couleur As Long
'Purpose     :  Shows the Choose Color Dialog
'Inputs      :  N/A
'Outputs     :  Returns -1 if the user pressed cancel, else returns the selected color
Public Function ShowColor() As Long
    Dim tColor As tChooseColor
    Dim Custcolor(16) As Long
    Dim lReturn As Long, lThisColor As Long
    Dim abytCustomColors(0 To 16 * 4 - 1) As Byte
    For lThisColor = LBound(abytCustomColors) To UBound(abytCustomColors)
        abytCustomColors(lThisColor) = 0
    Next
    tColor.lStructSize = Len(tColor)
    tColor.hwndOwner = GetActiveWindow
    tColor.hInstance = 1
 
    'Convert the custom colors to Unicode
    tColor.lpCustColors = StrConv(abytCustomColors, vbUnicode)
    tColor.flags = 0
    'Show the dialog
    If ChooseColorA(tColor) <> 0 Then
        ShowColor = tColor.rgbResult
    la_couleur = tColor.rgbResult
    Else
       la_couleur = 0
       Exit Function
 
    End If
 
End Function
et ce qu'il faut mettre dans le clic du bouton dans ton formulaire (adapte le nom a ton cas bien sur )

Code :
1
2
3
4
5
6
 
Private Sub CommandButton2_Click()
If ShowColor <> 0 Then
Me.BackColor = la_couleur
End If
End Sub
ta function a toi fonctionnait tres bien mais ne gérait pas le "-1" qui ne correspond a aucunes couleures

bon courage

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h15.


 
 
 
 
Partenaires

Hébergement Web