OVH Cloud OVH Cloud

cacher un contrôle en VBA

3 réponses
Avatar
oualaléreur
Bonjour,

J'ai eu beau essayer plusieurs syntaxes, je n'arrive pas =E0 forcer la
propri=E9t=E9 Visible de certains contr=F4les d'un sous-formulaire.
J'ai nomm=E9 les contr=F4les t0, t1, t2... et les labels associ=E9s l0,
l1, l2...
Entre deux ouvertures de mon formulaire, le nombre de champs pr=E9sents
dans la table "Temp_Tbl_AdHock" varie. je souhaite donc n'afficher que
les contr=F4les renseign=E9s.
Le sous-formulaire, en vue datasheet, est li=E9 =E0 la table. les
donn=E9es transitent bien et les noms sont aussi actualis=E9s
correctement. Seuls les contr=F4les en trop ne s'effacent pas.

Private Sub Form_Load()
Dim intIndex As Integer
Dim rst As DAO.Recordset
Set rst =3D CurrentDb.OpenRecordset("Temp_Tbl_AdHock", dbOpenDynaset)


With rst
For intIndex =3D 0 To .Fields.Count - 1

Me.Controls("t" & intIndex).ControlSource =3D
.Fields(intIndex).Name
Me.Controls("l" & intIndex).Caption =3D .Fields(intIndex).Name

Me.Controls("t" & intIndex).Visible =3D True
Me.Controls("l" & intIndex).Visible =3D True

Next

For intIndex =3D .Fields.Count To 16

Me.Controls("t" & intIndex).Visible =3D False
Me.Controls("l" & intIndex).Visible =3D False
Next
=20
=20
End With
End Sub


Merci

Benoit

3 réponses

Avatar
BCS
Slt,

Pourquoi ne pas mettre tout simplement tous tes champs de ton formulaire en
non visible et ta fonction se chargera uniquement de rendre visible ceux qui
sont dans ta table ? En plus, de cette manière, ca te fera du code en moins...

Bonne journée

Chris

"oualaléreur" wrote:

Bonjour,

J'ai eu beau essayer plusieurs syntaxes, je n'arrive pas à forcer la
propriété Visible de certains contrôles d'un sous-formulaire.
J'ai nommé les contrôles t0, t1, t2... et les labels associés l0,
l1, l2...
Entre deux ouvertures de mon formulaire, le nombre de champs présents
dans la table "Temp_Tbl_AdHock" varie. je souhaite donc n'afficher que
les contrôles renseignés.
Le sous-formulaire, en vue datasheet, est lié à la table. les
données transitent bien et les noms sont aussi actualisés
correctement. Seuls les contrôles en trop ne s'effacent pas.

Private Sub Form_Load()
Dim intIndex As Integer
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Temp_Tbl_AdHock", dbOpenDynaset)


With rst
For intIndex = 0 To .Fields.Count - 1

Me.Controls("t" & intIndex).ControlSource > ..Fields(intIndex).Name
Me.Controls("l" & intIndex).Caption = .Fields(intIndex).Name

Me.Controls("t" & intIndex).Visible = True
Me.Controls("l" & intIndex).Visible = True

Next

For intIndex = .Fields.Count To 16

Me.Controls("t" & intIndex).Visible = False
Me.Controls("l" & intIndex).Visible = False
Next


End With
End Sub


Merci

Benoit




Avatar
oualaléreur
Salut,

Merci, l'idée est bonne, mais ca n'a rien changé. Je pense que le
problème est ailleurs...Comme la vérité d'ailleurs.
En plus, imagine qu'entre deux ouvertures du formulaire le nombre de
champs dans la table diminue (une chance sur deux). Et bien, il faudra
tout de même cacher certains contrôles, non ? Ou la modife faite en
VBA ne s'applique que pour une ouverture...?
enfin il doit y avoir un problème dans le mode d'ouverture de mon
sous-formulaire, ou un truc du genre, parce que même en les mettant
manuellement tous invisibles, ils apparaissent tous.
Cela ne peut-il pas venir du fait que c'est justement un
sous-formulaire ?

merci encore et à +

Benoit
Avatar
3stone
Réponse sur ton autre post !!


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/