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 16/06/2011, 18h10   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Par défaut Probleme avec la propriete ControlSource d'un TextBox

Bonjour a tous,

Je suis entrain de travailler sur un etat en Access 2003. L’etat comporte 3 textbox (txtb_Y1 , txtb_Y0 et txtB_Comp).

Je veux attribuer aux deux premiers textbox des valeurs contenues dans une table nommee “mt_CrossTab” et ensuite la valeur du troisieme textbox sera la sonme des valeurs des deux premiers textbox.

Question:1
J’ai place mon code dans l’evenement Open de l’object Report mais je ne suis pas sur que c’est le bon emplacement. Dans quel objet faut il le placer (Report, PageFooterSection, PageHeaderSection, Details, General) et quel evenement je dois choisir?

Question:2
vba mets en rouge les formules des textbox txtb_Y1 et txtb_Y0. mais les memes formules marchent parfaitement quand je les place directement dans les textbox sur l’etat(en mode design).
Comment est ce que je dois changer les formules pour qu’elles fonctiennent egalement en vba?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Report_Open(Cancel As Integer)
 
 
    Dim myControls  ' la collection de mes controls.
     Set myControls = Me.Controls
 
     myControls("txtB_Y1").controlsource = "=DLookUp("[31/03/2011]","mt_crosstab","CategoryName='B'")"
     myControls("txtB_Y0").controlsource = "=DLookUp("[31/03/2010]","mt_crosstab","CategoryName='B'")"
 
     '"mt_crosstab"  est le nom de ma table.
     ' "[31/03/2010]" est le champs qui contient la valeur que je veux extraire.
 
     myControls("txtB_Comp").ControlSource = "=(txtB_Y0.value -txtB_Y1.value )"
 
end sub
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 18h49   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Peux-tu expliquer clairement ce que tu veux faire.

Où se situent les zones de texte dont tu parles ?

Montre par exemple une image de l'état que tu voudrais obtenir.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 19h20   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Citation:
Envoyé par ClaudeLELOUP Voir le message
Bonjour,

Peux-tu expliquer clairement ce que tu veux faire.

Où se situent les zones de texte dont tu parles ?

Montre par exemple une image de l'état que tu voudrais obtenir.
bonsoir claude,

Les trios zones de textes se trovuent dans la partie “Details Section” de mon etat.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 20h01   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Je ne comprends toujours pas ce que tu veux faire ni pourquoi ces valeurs ne sont pas incluses dans la source de l'état.

Quoi qu'il en soit, la syntaxe est, pour autant que les noms mentionnés dans ton message soient corrects :

Code :
1
2
3
Me.txtB_Y1 = DLookUp("[31/03/2011]","mt_crosstab","CategoryName='B'")
Me.txtB_Y0 = DLookUp("[31/03/2010]","mt_crosstab","CategoryName='B'")
me.txtB_Comp = Me.txtB_Y0 -Me.txtB_Y1
à loger dans l'évènement "sur ouverture" de ton état.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 12h48   #5
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonjour,
Merci pour ta reponse. J’ai essaye ta suggestion mais ca ne marche pas. J’obtiens l’erreur suivante: “you can’t assign a value to this object”.

Comme je l’avais dit dans mon premier message, la formule DlooKup marche tres bien quand elle est placee directement dans Control Source de mon textbox. Donc je vous demande simplement de m’aider a realiser la meme chose avec du code VBA.

Voici la formule que j’ai placee dans le Control Source de mon textbox (et cela marche tres bien):

=DLookUp("[31/03/2011]","mt_crosstab","CategoryName='B'")


Dans VBA, si j’attribue la meme formule (mais entouree de “ “ comme l’exige la syntaxe de la propriete ControlSource) a la propriete ControlSource de l’objet Textbox, le compilateur me mets toute la ligne de mon code en rouge.




Code :
1
2
3
4
5
6
7
Private Sub Report_Open(Cancel As Integer)
 
Dim myControls
Set myControls = Me.Controls
myControls("txtB_Y1").ControlSource = "=DLookup("[31/03/2011]", "mtcrosstab", "CategoryName='B'")"
 
End Sub
J’ai pense que le probleme venait du fait que la formule de Dlookup contient deja des “” alors je les ai elimines en utilisant CStr. Cette fois ci le compilateur n’a pas mis en rouge mon code mais j’ai obtenu l’erreur #Name? sur mon etat.



Code :
1
2
3
4
5
6
7
8
Private Sub Report_Open(Cancel As Integer)
 
Dim myControls
Set myControls = Me.Controls
 
myControls("txtB_Y1").ControlSource = "=DLookup(cstr([31/03/2011]), cstr(mt_crosstab), cstr(CategoryName=cstr(B)))"
 
End Sub
Merci de m’aider a resourdre ce probleme.
Ps. Mon access est en anglais; voila la raison pour laquelle certains passages de mes messages sont en anglais.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 14h00   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Peux-tu poster le zip de ta BDD ?
Ça nous permettra de dialoguer sur du concret.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 19h05   #7
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonjour toute l’equipe,
Merci de votre aide.
Voici le rapport sur lequel je travaille.
La première rangée de zone de texte sert d’entête et on y trouve les zones de textes suivants : txtC1, txtC2, txtC3 et txtC4. La première colonne de zone de texte tout à gauche comporte les zones de textes suivants : txtR1, txtR2, txtR3. Les autres zones de textes ont des noms qui sont en fait la combinaison des noms de lignes et de colonnes auxquelles elles appartiennent. Par exemple, la dernière zone de texte tout en bas et à droite a pour nom txtR3C4.
J’ai utilisé la fonction DLookUp pour extraire les données de la table Table1 vers le rapport car je ne veux pas faire apparaître toutes les données de la table.
Comme vous pouvez le remarquez j’ai réussi a insérer les données de la première ligne de ma table(ie la ligne VB). Les formules ont ete insérées dans la propriété ControlSource de chaque zone de textes.
Question 1 : je vous demande de m’aider a réaliser la même tache(que celle realisée pour la premiere linge ie la ligneVB) mais cette fois ci avec du code vba.
Question2 :
Considerons l’exemple de la formule suivante :
Code :
=DLookUp("[31/03/2010]";"CT";"StatusName='VB'")
Vous remarquerez que le premier argument de cette fonction est en fait la valeur du textC2 tandis que le troisieme argument est la valeur du textR1.
Partant de ce constat, j’aimerais inclure dans la fonction DLookUp les valeurs de textC2 et textR1. Comme cela, je n’aurais plus à les saisir manuellement. J’ai essayé la formule suivante mais ca ne marche pas.
Code :
=DLookUp("[textC2].value";"CT";"[textR1].value='VB'"))
Je vous remercie d’avance.
Fichiers attachés
Type de fichier : rar Database1.rar (12,6 Ko, 2 affichages)
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 21h01   #8
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonsoir,

Désolé, je dispose de Access2000 => tu annonçais travailler en 2003 => fichier .mdb que j'aurais pu lire.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 23h57   #9
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Citation:
Envoyé par ClaudeLELOUP Voir le message
Bonsoir,

Désolé, je dispose de Access2000 => tu annonçais travailler en 2003 => fichier .mdb que j'aurais pu lire.

desolé claude,
j'ai access 2007 a la maison et access 2003 au boulot. je vais t'envoyer le fichier du boulot demain. merci et bonne soiree.
Bonero 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 19h18.


 
 
 
 
Partenaires

Hébergement Web