Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 29/06/2011, 14h29   #1
Invité régulier
 
Homme
Inscription : mai 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 28
Points : 9
Points : 9
Par défaut Intégration d'une variable dans la désignation d'un contrôle

Bonjour,

J'ai posté hier sur un problème de mise en forme conditionnelle sous VBA (qui a été résolu).
Je reviens vers vous car j'ai un nombre certain de contrôle à conditionner et pour ne pas avoir à tout coder, je voulais créer une fonction.
J'ai donc créé le module suivant:
Code :
1
2
3
4
5
6
7
Sub Tableau_Floraison_Interet(Mois As String, couleur As Long)
 
Me.Visualisation_Interet_Mois.FormatConditions.Delete
Me.Visualisation_Interet_Mois.FormatConditions.Add acExpression, , "[Interet_" & Mois & "] = True"
Me.Visualisation_Interet_Mois.FormatConditions.Item(0).BackColor = couleur
 
End Sub
Le problème est que la syntaxe pour la variable "Mois" n'est pas bonne.
J'ai le message d'erreur suivant: Type d'argument ByRef incompatible

Est ce que quelqu'un a une idée?

Merci beaucoup
Oxopor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h52   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Il faudrais que tu vérfies le type de la variable que tu passes au moment de l'appel de ta fonction et probablement que tu convertisses cette variable en String avec CStr().

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h13   #3
Invité régulier
 
Homme
Inscription : mai 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 28
Points : 9
Points : 9
Voici la ligne d'appel de la fonction:
Code :
Call Tableau_Floraison_Interet(Janvier, RGB(0, 255, 0))
En la modifiant avec "CStr(Janvier)", la fonction se lance. Merci marot_r.

Mais les problèmes continuent. Il me met le message d'erreur "Membre de méthode ou de données introuvable" sur '.Visualisation_Interet_Mois'.

Problème de syntaxe?

Merci
Oxopor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h27   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Quel est le type de Visualisation_Interet_Mois ?
Est-ce un textBox ?

Un bon truc lorsqu'on fait ce genre de manip c'est de définir un objet du type qui t'interesse.

ex fictif :

Code :
1
2
3
4
Dim tb as TextBox
set tb=me.TaTextBox
tb.UnePropriete=Valeur
set tb=nothing
En procédant comme cela grace à Intelissens tu peux vérifier immédiatement si ton objet supporte la propriété ou la méthode que tu veux.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 18h13   #5
Invité régulier
 
Homme
Inscription : mai 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 28
Points : 9
Points : 9
Désolé marot_r, je ne suis pas super calé comme tu as pu le remarquer et je suis un peux perdu.

Pour remettre dans le contexte: j'ai 12 TextBox nommées "Visualisation_Interet_Janvier", "Visualisation_Interet_Fevrier" etc...
Je veux conditionner ces TextBox pour que, lorsqu'une ChekBox correspondante (Interet_Janvier) soit cochée, la TextBox change de couleur.

J'ai donc le code pour "Visualisation_Interet_Janvier":
Code :
1
2
3
Me.Visualisation_Interet_Janvier.FormatConditions.Delete
Me.Visualisation_Interet_Janvier.FormatConditions.Add acExpression, , "[Interet_Janvier] = True"
Me.Visualisation_Interet_Janvier.FormatConditions.Item(0).BackColor = RGB(0, 255, 0)
Du fait qu'il y en a 12, je voulais créer une fonction ayant le mois et la couleur comme variables. D'où le code sur le premier post.

En ce qui concerne ton truc, j'ai essayé le code:
Code :
1
2
3
4
Dim tb As TextBox
Set tb = Me.Visualisation_Interet_Janvier
tb = "Valeur"
Set tb = Nothing
et ça m'affiche bien "Valeur" dans ma TextBox.

Merci
Oxopor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 21h56   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Ok, désolé je n'avais pas saisi.

Le code ci-dessous devrait répondre à ton besoin.

Code :
1
2
3
4
5
6
7
 
Dim tb As TextBox
Set tb = Me.controls("Visualisation_Interet_" & Mois)'La collection Controls contient tous les contrôles d'un formulaire et on peut chosir ce contrôle par son nom
tb.FormatConditions.Delete
tb.FormatConditions.Add acExpression, , "[Interet_" & Mois & "] = True"
tb.FormatConditions.Item(0).BackColor = couleur
Set tb = Nothing
Et au lieu de tb tu pourrais utiliser ton Visualisation_Interet_Mois qui rendrait ton code plus clair.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 14h28   #7
Invité régulier
 
Homme
Inscription : mai 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 28
Points : 9
Points : 9
Bonjour, désolé pour le temps de réponse.

J'ai essayé le code que tu as poster marot_r.
Donc pour mémoire, dans un module:
Code :
1
2
3
4
5
6
7
8
9
10
Sub Tableau_Floraison_Interet(Mois As String, couleur As String)
 
Dim tb As TextBox
Set tb = [Forms]![FrmFiche_Plante].Controls("Visualisation_Interet_" & Mois)
tb.FormatConditions.Delete
tb.FormatConditions.Add acExpression, , "[Interet_" & Mois & "] = True"
tb.FormatConditions.Item(0).BackColor = couleur
Set tb = Nothing
 
End Sub
Et dans mon formulaire:
Code :
1
2
3
4
5
Private Sub Form_Load()
 
Call Tableau_Floraison_Interet(CStr(Janvier), RGB(0, 255, 0))
 
End sub
Mais il me met toujours une erreur:
"Erreur d'execution '2465'
Jard'intemporel ne trouve pas le champs 'Visualisation_Interet_' auquel il est fait référence dans votre expression."
Cette erreur apparait dans le module et souligne la ligne:
Set tb = [Forms]![FrmFiche_Plante].Controls("Visualisation_Interet_" & Mois)

J'ai essayé avec des guillemets, sans, et toujours identique. Il ne prend pas la variable.

Est ce que ma fonction est bien déclarée?
Oxopor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h24   #8
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Code :
1
2
3
4
5
Private Sub Form_Load()
 
Call Tableau_Floraison_Interet(CStr(Janvier), RGB(0, 255, 0))
 
End sub
Est-ce que Janvier est le nom d'un des champs ?
Si oui, actuellement il est vide.
Si non, il faudrait écrire
Code :
Call Tableau_Floraison_Interet("Janvier"), RGB(0, 255, 0))
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 17h50   #9
Invité régulier
 
Homme
Inscription : mai 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 28
Points : 9
Points : 9
Merci beaucoup marot_r.
Janvier n'était pas un champs mais juste un intitulé.

Donc la syntaxe exact est:
Code :
Call Tableau_Floraison_Interet("Janvier", RGB(0, 255, 0))
Et cela fonctionne parfaitement.

Merci encore marot_r de ne pas craquer et de nous aider jusqu'au bout.
Oxopor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h38.


 
 
 
 
Partenaires

Hébergement Web