Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment créer une collection

2 réponses
Avatar
domivax
Bonjour =E0 tous,

J'ai ...

1) Un Etat (MonEtat), dans celui-ci
2) Un Sous-=E9tat (MonSousEtat), dans celui-ci
3) Un champ (MonChamp), aliment=E9 par
4) Une requ=EAte (MaRequete),
5) Une fonction (MaFonction) pour d=E9terminer si MaDonnee dans MonChamp
appara=EEt sur deux lignes.

Function MaFonction (pCtrl As Control, ByVal str As String)
Dim lx As Long, ly As Long
WizHook.Key =3D 51488399
WizHook.TwipsFromFont pCtrl.FontName, pCtrl.FontSize,
pCtrl.FontWeight, pCtrl.FontItalic, pCtrl.FontUnderline, 0, str, 0,
lx, ly
MaFonction =3D lx
End Function


Pour une question d'=E9quilibre visuelle dans MonEtat, j'agis avec
le .Top de MonSousEtat pour le monter l=E9g=E8rement au cas o=F9 si MaDonnee
appara=EEt sur deux lignes.


Au formatage de MonSousEtat, j'ai commenc=E9 comme ceci :

For Each MyData In MyCollection
If Me. MonChamp.Width < MaFonction (Me. MonChamp, Me. MonChamp)
Then
Reports! MonEtat. MonSousEtat.Top =3D Reports! MonEtat.
MonSousEtat.Top - 190
ElseIf Not Me.MetServi.Width < GetTextLen(Me.MetServi,
Me.MetServi) Then
Reports! MonEtat. MonSousEtat.Top =3D Reports! MonEtat.
MonSousEtat.Top
End If

Next MyData

End Sub

Malheureusement, je s=E8che avec MyCollection, comment dire =E0 Access que
MyCollection concernent chaque MonChamp g=E9n=E9r=E9 par MaRequete

Merci pour votre aide.

A bient=F4t.
Xavier

2 réponses

Avatar
Thierry (ze Titi)
Bonjour Xavier,

Je ne suis pas persuadé que tu sois parti sur la bonne solution...
Il me semble plutôt que tu devrais utiliser l'évènement "Au formattage"
de la section contenant ton sous-état et pour faire tes tests et ta
mise en forme.


Dans ton message
du mardi 30/10/2007 jour de Saint Bienvenue, tu as pris l'initiative de
nous narrer les faits suivants:
Bonjour à tous,

J'ai ...

1) Un Etat (MonEtat), dans celui-ci
2) Un Sous-état (MonSousEtat), dans celui-ci
3) Un champ (MonChamp), alimenté par
4) Une requête (MaRequete),
5) Une fonction (MaFonction) pour déterminer si MaDonnee dans MonChamp
apparaît sur deux lignes.

Function MaFonction (pCtrl As Control, ByVal str As String)
Dim lx As Long, ly As Long
WizHook.Key = 51488399
WizHook.TwipsFromFont pCtrl.FontName, pCtrl.FontSize,
pCtrl.FontWeight, pCtrl.FontItalic, pCtrl.FontUnderline, 0, str, 0,
lx, ly
MaFonction = lx
End Function


Pour une question d'équilibre visuelle dans MonEtat, j'agis avec
le .Top de MonSousEtat pour le monter légèrement au cas où si MaDonnee
apparaît sur deux lignes.


Au formatage de MonSousEtat, j'ai commencé comme ceci :

For Each MyData In MyCollection
If Me. MonChamp.Width < MaFonction (Me. MonChamp, Me. MonChamp)
Then
Reports! MonEtat. MonSousEtat.Top = Reports! MonEtat.
MonSousEtat.Top - 190
ElseIf Not Me.MetServi.Width < GetTextLen(Me.MetServi,
Me.MetServi) Then
Reports! MonEtat. MonSousEtat.Top = Reports! MonEtat.
MonSousEtat.Top
End If

Next MyData

End Sub

Malheureusement, je sèche avec MyCollection, comment dire à Access que
MyCollection concernent chaque MonChamp généré par MaRequete

Merci pour votre aide.

A bientôt.
Xavier


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
domivax
Bonjour Thierry,

Merci pour ta réponse mais je n'arrive pas à comprendre ce qui
changerait que je mette ma macro au formatage de MonEtat au lieu de
mon SousEtat.

Je vais préciser un peu ce que j'attends de ma macro.

J'ai un cadre dans MonEtat avec dans celui-ci : mon SousEtat aligné
verticalement au cadre et je voudrais aligner verticalement mes
données (maximum 3 données, pas plus)

J'ai en plus un TextBox qui renvoie le décompte des données (1,2 ou 3)
pour gérer le .Top initial de MonEtat.

Si une seule donnée est renvoyée sur une ligne, aucun problème puisque
mon SousEtat est initialement aligné verticalement , ex. :

----------------

MAGELLAN

----------------


Si j'ai une donnée mais sur deux lignes, je fais intervenir MaFonction
pour faire remonter légèrement mon SousEtat pour un alignement
vertical parfait, par ex. :

-----------------

CHRISTOPHE
COLOMB

-----------------

mais où ça se corse c'est si j'ai deux données ou trois, sur deux
lignes ou sur une, par ex. :

-----------------
MAGELLAN
CHRISTOPHE
COLOMB
-----------------

Comment faire ?

PS : ça ne me pose aucun problème que les données apparaissent sur
deux lignes.

Encore merci.
Bonne soirée.