[VBA ACCESS] objets introuvables dans Sub
Résolu
panda
-
panda -
panda -
Bonjour,
j'ai une table [Options] ou je stocke des preferences utilisateurs, dont les couleurs de l'interface.
les valeurs des couleurs sont dans le champs "Paramètre" de cette table.
je voulais donc une Sub qui extrait ces couleurs de la Table et les assigne aux éléments concernés. pour cela j'ai bien sûr uniformisé le nom des éléments en question sur tous les formulaires.
ma Sub placée dans un module est la suivante:
-------------------------------------------------------------------------------------------------------
Sub MiseAuxCouleurs()
Dim coul1 As String, coul2 As String, coul3 As String
coul1 = DLookup("[Paramètre]", "Options", "[N°] = 2")
coul2 = DLookup("[Paramètre]", "Options", "[N°] = 3")
coul3 = DLookup("[Paramètre]", "Options", "[N°] = 4")
LblEntete.ForeColor = coul3
EntêteFormulaire.BackColor = coul1
Détail.BackColor = coul2
End Sub
------------------------------------------------------------------------------------------------------------
au début j'avais mis des Me. , mais je sais qu'il ne reconnait pas Me dans une Sub qui vient d'un module.
cependant même sans, il ne reconnait pas les objets et bloque sur "LblEntete.ForeColor = coul3" avec une erreur 424, objet requis.
comment faire pour qu'il reconnaisse bien LblEntete.ForeColor, EntêteFormulaire.BackColor et Détail.BackColor qui sont bien présents sur chaque formulaire ou je veux appeler ma Sub?
j'ai une table [Options] ou je stocke des preferences utilisateurs, dont les couleurs de l'interface.
les valeurs des couleurs sont dans le champs "Paramètre" de cette table.
je voulais donc une Sub qui extrait ces couleurs de la Table et les assigne aux éléments concernés. pour cela j'ai bien sûr uniformisé le nom des éléments en question sur tous les formulaires.
ma Sub placée dans un module est la suivante:
-------------------------------------------------------------------------------------------------------
Sub MiseAuxCouleurs()
Dim coul1 As String, coul2 As String, coul3 As String
coul1 = DLookup("[Paramètre]", "Options", "[N°] = 2")
coul2 = DLookup("[Paramètre]", "Options", "[N°] = 3")
coul3 = DLookup("[Paramètre]", "Options", "[N°] = 4")
LblEntete.ForeColor = coul3
EntêteFormulaire.BackColor = coul1
Détail.BackColor = coul2
End Sub
------------------------------------------------------------------------------------------------------------
au début j'avais mis des Me. , mais je sais qu'il ne reconnait pas Me dans une Sub qui vient d'un module.
cependant même sans, il ne reconnait pas les objets et bloque sur "LblEntete.ForeColor = coul3" avec une erreur 424, objet requis.
comment faire pour qu'il reconnaisse bien LblEntete.ForeColor, EntêteFormulaire.BackColor et Détail.BackColor qui sont bien présents sur chaque formulaire ou je veux appeler ma Sub?
A voir également:
- [VBA ACCESS] objets introuvables dans Sub
- Site pour vendre des objets d'occasion - Guide
- Ryanair objets interdits - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
- Acer quick access - Forum logiciel systeme
- Access appdata - Guide
9 réponses
j'ai une solution même si elle ne me satisfait pas. j'ai transformé ma Sub en Function et rajouté le nom de la Form en argument:
----------------------------------------------------------
pagencours = Form.Name
MiseAuxCouleurs (pagencours)
-----------------------------------------------
Function MiseAuxCouleurs(pagencours)
Dim coul1 As String, coul2 As String, coul3 As String
coul1 = DLookup("[Paramètre]", "Options", "[N°] = 2")
coul2 = DLookup("[Paramètre]", "Options", "[N°] = 3")
coul3 = DLookup("[Paramètre]", "Options", "[N°] = 4")
Forms(pagencours).LblEntete.ForeColor = coul3
Forms(pagencours).EntêteFormulaire.BackColor = coul1
Forms(pagencours).Détail.BackColor = coul2
End Function
--------------------------------------------------------------------------------------
ça ne me satisfait qu'à moitié, il doit bien y avoir un moyen pour que "Forms(pagencours)" soit implicite.
j'ai essayé :
Me..LblEntete.ForeColor = coul3
ou
ActiveForm.LblEntete.ForeColor = coul3
mais sans succès.
je précise que mon appel a la function se trouve dans le form_load
auriez vous une autre solution s'il vous plait?
----------------------------------------------------------
pagencours = Form.Name
MiseAuxCouleurs (pagencours)
-----------------------------------------------
Function MiseAuxCouleurs(pagencours)
Dim coul1 As String, coul2 As String, coul3 As String
coul1 = DLookup("[Paramètre]", "Options", "[N°] = 2")
coul2 = DLookup("[Paramètre]", "Options", "[N°] = 3")
coul3 = DLookup("[Paramètre]", "Options", "[N°] = 4")
Forms(pagencours).LblEntete.ForeColor = coul3
Forms(pagencours).EntêteFormulaire.BackColor = coul1
Forms(pagencours).Détail.BackColor = coul2
End Function
--------------------------------------------------------------------------------------
ça ne me satisfait qu'à moitié, il doit bien y avoir un moyen pour que "Forms(pagencours)" soit implicite.
j'ai essayé :
Me..LblEntete.ForeColor = coul3
ou
ActiveForm.LblEntete.ForeColor = coul3
mais sans succès.
je précise que mon appel a la function se trouve dans le form_load
auriez vous une autre solution s'il vous plait?
bonjour,
peut-être n'ai je pas suffisamment mis les formes, cependant il ne me semble pas avoir été incorrect.
je n'exige rien, n'utilise pas l'impératif... et le "Bonjour" y est.
cependant,je prends note de ta remarque et en tiendrai compte à l'avenir.
d'ailleurs, merci d'avance à tous ceux qui répondront où prendront le temps de lire ce sujet.
peut-être n'ai je pas suffisamment mis les formes, cependant il ne me semble pas avoir été incorrect.
je n'exige rien, n'utilise pas l'impératif... et le "Bonjour" y est.
cependant,je prends note de ta remarque et en tiendrai compte à l'avenir.
d'ailleurs, merci d'avance à tous ceux qui répondront où prendront le temps de lire ce sujet.
Bonjour,
si le code est dans un module, mettez le nom du formulaire devant les objets:
form_mom_formulaire.LblEntete.ForeColor = coul3
etc..
bonne suite
si le code est dans un module, mettez le nom du formulaire devant les objets:
form_mom_formulaire.LblEntete.ForeColor = coul3
etc..
bonne suite
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pour la réponse.
c'est un peu la solution que j'ai trouvé.
sauf que le but est d'appeler cette function de n'importe quel formulaire pour lui mettre les bonnes couleurs.
donc je ne peux y mettre un nom de formulaire en particulier.
il faudrait que ça s'applique automatiquement aux objets du formulaire en cours de chargement.
c'est un peu la solution que j'ai trouvé.
sauf que le but est d'appeler cette function de n'importe quel formulaire pour lui mettre les bonnes couleurs.
donc je ne peux y mettre un nom de formulaire en particulier.
il faudrait que ça s'applique automatiquement aux objets du formulaire en cours de chargement.
bizarrement lorsque j'utilise le code dans mon formulaire:
pagencours = Form.Name
MiseAuxCouleurs (pagencours)
et que je mets entre les 2 une
msgbox pagencours
il me retourne bien le nom du formulaire en train de charger.
alors dans la fonction MiseAuxCouleurs, il doit bien y avoir quelque chose de générique utilisable pour identifier mes objets quels que soit le formulaire en cours.
activeform, current form?
pagencours = Form.Name
MiseAuxCouleurs (pagencours)
et que je mets entre les 2 une
msgbox pagencours
il me retourne bien le nom du formulaire en train de charger.
alors dans la fonction MiseAuxCouleurs, il doit bien y avoir quelque chose de générique utilisable pour identifier mes objets quels que soit le formulaire en cours.
activeform, current form?