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

Alternative à la zone de liste

7 réponses
Avatar
RideHicul
Bonsoir,

Quelqu'un connait t-il une alternative au controle "zone de liste" (listbox)
?

Je m'explique :

Je reproche au listbox de ne pas pouvoir formater mes colonnes (alignement,
format des chiffres).
Pour le format des chiffres, on peut se débrouiller du côté de la requete,
mais pour l'alignement c'est grosse galère (police non proportionnelle +
calcul des espaces)
J'ai bien trouvé une fonction à télécharger pour simuler un alignement
correct, mais là aussi, grosse galère à utiliser avec des requêtes
complexes.

Avec un sous-formulaire, je fais ce que je veux, mais c'est beaucoup plus
long à mettre en place et il est difficile de simuler la sélection d'une
ligne complète comme dans un listbox (gérer les doubles clic sur une ligne,
etc ..)

Bref, ce que je cherche c'est bien un listBox avec quelques propriétés en
plus ...

Si quelqu'un à une idée ou une piste ...
D'avance merci,

RideHickul

7 réponses

Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Et un champ calculé avec une ou des concaténations ?

Bref, ce que je cherche c'est bien un listBox avec quelques propriétés en
plus ...



T'es en Access, Riri, pas en VB...
Désolé ;)

Cdt, Blaise
---- ---- ----


"RideHicul" a écrit dans le message de news:

Bonsoir,

Quelqu'un connait t-il une alternative au controle "zone de liste"
(listbox) ?

Je m'explique :

Je reproche au listbox de ne pas pouvoir formater mes colonnes
(alignement, format des chiffres).
Pour le format des chiffres, on peut se débrouiller du côté de la requete,
mais pour l'alignement c'est grosse galère (police non proportionnelle +
calcul des espaces)
J'ai bien trouvé une fonction à télécharger pour simuler un alignement
correct, mais là aussi, grosse galère à utiliser avec des requêtes
complexes.

Avec un sous-formulaire, je fais ce que je veux, mais c'est beaucoup plus
long à mettre en place et il est difficile de simuler la sélection d'une
ligne complète comme dans un listbox (gérer les doubles clic sur une
ligne, etc ..)

Bref, ce que je cherche c'est bien un listBox avec quelques propriétés en
plus ...

Si quelqu'un à une idée ou une piste ...
D'avance merci,

RideHickul




Avatar
Argyronet
Bonjour,

Les 2 seules alternnatives dont tu disposes sont les suivantes :
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
En matière de contrôle OCX : Le ListView (Problème : ill aligne aussi les
entêtes, donc hummm...)
En matière de facilité et souplesse : Le sous-formulaire déguisé en ListBox
et pour gérer les double clic, tu poses un bouton transparent sur la ligne
complète au premier plan : pour savoir sur quel contrôle tu es focalisé, tu
te sert de X et de Y de l'événement MouseMove()... Pour le coté look, tu peux
regarder ce tutoriel
(http://argyronet.developpez.com/office/access/highlightrecord/) que j'ai
écrit pour la communauté...

Bonne journée
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"RideHicul" a écrit :

Bonsoir,

Quelqu'un connait t-il une alternative au controle "zone de liste" (listbox)
?

Je m'explique :

Je reproche au listbox de ne pas pouvoir formater mes colonnes (alignement,
format des chiffres).
Pour le format des chiffres, on peut se débrouiller du côté de la requete,
mais pour l'alignement c'est grosse galère (police non proportionnelle +
calcul des espaces)
J'ai bien trouvé une fonction à télécharger pour simuler un alignement
correct, mais là aussi, grosse galère à utiliser avec des requêtes
complexes.

Avec un sous-formulaire, je fais ce que je veux, mais c'est beaucoup plus
long à mettre en place et il est difficile de simuler la sélection d'une
ligne complète comme dans un listbox (gérer les doubles clic sur une ligne,
etc ..)

Bref, ce que je cherche c'est bien un listBox avec quelques propriétés en
plus ...

Si quelqu'un à une idée ou une piste ...
D'avance merci,

RideHickul





Avatar
RideHickul
Salut Argyronet,

Merci pour ta réponse.
Effectivement, le ListView bof bof ...

On a donc que la possibilité de passer par le sous-formulaire ... (super ton
tuto, y'a des idées que je vais reprendre !)
Mais ...

Si un sous-formulaire c'est bon pour des requêtes sélection "normales", je
ne m'en sort pas avec des analyses croisées.
Dans les requêtes analyse croisée, je ne maîtrise pas les "noms des champs"
qui seront affichés en colonne par la requête.

A partir de là, je ne peut pas bâtir un formulaire sur cette source (la
requête) car les champs changent (les chanchange) !
Il serait peut-être possible de lire la structure de la requete (avec un
QueryDef), puis de créer les champs à la volée ...
Ca me parait un peu chaud à faire, tout ca pour afficher correctement des
chiffres ! (et accessoirement pour mon niveau !)

RideHickul





"Argyronet" a écrit dans le message de
news:
Bonjour,

Les 2 seules alternnatives dont tu disposes sont les suivantes :
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
En matière de contrôle OCX : Le ListView (Problème : ill aligne aussi les
entêtes, donc hummm...)
En matière de facilité et souplesse : Le sous-formulaire déguisé en
ListBox
et pour gérer les double clic, tu poses un bouton transparent sur la ligne
complète au premier plan : pour savoir sur quel contrôle tu es focalisé,
tu
te sert de X et de Y de l'événement MouseMove()... Pour le coté look, tu
peux
regarder ce tutoriel
(http://argyronet.developpez.com/office/access/highlightrecord/) que j'ai
écrit pour la communauté...

Bonne journée
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)





Avatar
RideHickul
Salut Blaise,

Pour le champ calculé avec concaténation ... je dis pas non si on peut
utiliser le solveur dessus ...

Pour le reste, ma question revient à la suivante :
Est-il possible, dans un formulaire, d'afficher une colonne de chiffres
correctement formatée lorsque les chiffres proviennent d'une requête analyse
croisée ?
Le tout dans Access bien sûr ;-)

RideHickul



"Blaise Cacramp" a écrit dans le message de news:

Selon : Bonjour ou bonsoir

Et un champ calculé avec une ou des concaténations ?

Bref, ce que je cherche c'est bien un listBox avec quelques propriétés en
plus ...



T'es en Access, Riri, pas en VB...
Désolé ;)

Cdt, Blaise
---- ---- ----




Avatar
Argyronet
Bien oui, effectivement...

mais en fait, vous pouvez procéder comme suit :
Créez un formulaire vierge dans la base de données "les comptoirs"
Si vous ne l'avez pas , técéhargez-là ici :
http://argyronet.developpez.com/office/access/Comptoirs/Comptoirs.mdb

Dans ce formulaire avec en-tête et pied, vous posez 6 labels en en-tête
nommés lbl0 à lbl5 puis 6 textbox indépendants nommés txt0 à txt5.

recopiez ce bloc de code dans la classe du formulaire :
Option Compare Database
Option Explicit

Private Sub Form_Load()
FillMyFormWithPivotDemo
End Sub

Private Sub CreateMyQuery(ByVal QueryName As String, ByVal SQL As String,
Optional ByRef FieldsNames As String)
Dim oQDF As DAO.QueryDef
Dim oFLD As DAO.Field
Dim F As Integer

On Error Resume Next
FieldsNames = ""
Set oQDF = CurrentDb.QueryDefs(QueryName)
If Err <> 0 Then
Err.Clear
'N'existe pas alors on la créé
Set oQDF = CurrentDb.CreateQueryDef(QueryName, SQL)
Else
'Exite déjà donc on met à jour sa propriété SQL
oQDF.SQL = SQL
End If
For Each oFLD In oQDF.Fields
F = F + 1
FieldsNames = FieldsNames & oFLD.Name & IIf(F >= oQDF.Fields.Count,
"", ";")
Next
Set oQDF = Nothing
End Sub

Private Sub FillMyFormWithPivotDemo()
Dim oCTL As Control

Const MY_QUERY As String =
"qry_PivotTestComptoirs"
Const QUARTET_STRING As String = "'Trim
1','Trim 2','Trim 3','Trim 4'"
Const QUOTE As String = """"
Const LABEL_PREFIX As String = "lbl"
Const TEXTBOX_PREFIX As String = "txt"

Dim strQueryFields As String
Dim SQLCommand As String
Dim straFields() As String
Dim F As Integer

SQLCommand = "TRANSFORM Sum(CCur([Détails commandes].[Prix
unitaire]*[Quantité]*(1-[Remise (%)])/100)*100) AS MontantProduit"
SQLCommand = SQLCommand & vbCrLf & "SELECT Catégories.[Nom de
catégorie], Year([Date commande]) AS AnnéeCommande"
SQLCommand = SQLCommand & vbCrLf & "FROM Catégories INNER JOIN (Produits
INNER JOIN (Commandes INNER JOIN [Détails commandes] ON Commandes.[N°
commande] = [Détails commandes].[N° commande]) ON Produits.[Réf produit] =
[Détails commandes].[Réf produit]) ON Catégories.[Code catégorie] =
Produits.[Code catégorie]"
SQLCommand = SQLCommand & vbCrLf & "WHERE (((Commandes.[Date commande])
Between #1/1/1997# And #12/31/1997#))"
SQLCommand = SQLCommand & vbCrLf & "GROUP BY Catégories.[Nom de
catégorie], Year([Date commande])"
SQLCommand = SQLCommand & vbCrLf & "PIVOT " & Chr(34) & "Trim " &
Chr(34) & " & DatePart(" & Chr(34) & "q" & Chr(34) & ",[Date commande],1) In
(" & QUARTET_STRING & ");"

Call CreateMyQuery(MY_QUERY, SQLCommand, strQueryFields)
Debug.Print strQueryFields
straFields = Split(strQueryFields, ";")
For F = LBound(straFields()) To UBound(straFields())
Set oCTL = Me.Controls(TEXTBOX_PREFIX & F)
oCTL.ControlSource = "=[" & straFields(F) & "]"
Set oCTL = Me.Controls(LABEL_PREFIX & F)
oCTL.Caption = straFields(F)
Next
Me.RecordSource = MY_QUERY
Me.Requery
End Sub

Appuyez sur F5 dans le formulaire et surprise !!!
A vous d'adapter pour vos cas mais je pense qu'avec cet exemple, vous
arriverez à vos fins...
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"RideHickul" a écrit :

Salut Argyronet,

Merci pour ta réponse.
Effectivement, le ListView bof bof ...

On a donc que la possibilité de passer par le sous-formulaire ... (super ton
tuto, y'a des idées que je vais reprendre !)
Mais ...

Si un sous-formulaire c'est bon pour des requêtes sélection "normales", je
ne m'en sort pas avec des analyses croisées.
Dans les requêtes analyse croisée, je ne maîtrise pas les "noms des champs"
qui seront affichés en colonne par la requête.

A partir de là, je ne peut pas bâtir un formulaire sur cette source (la
requête) car les champs changent (les chanchange) !
Il serait peut-être possible de lire la structure de la requete (avec un
QueryDef), puis de créer les champs à la volée ...
Ca me parait un peu chaud à faire, tout ca pour afficher correctement des
chiffres ! (et accessoirement pour mon niveau !)

RideHickul





"Argyronet" a écrit dans le message de
news:
> Bonjour,
>
> Les 2 seules alternnatives dont tu disposes sont les suivantes :
> ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
> En matière de contrôle OCX : Le ListView (Problème : ill aligne aussi les
> entêtes, donc hummm...)
> En matière de facilité et souplesse : Le sous-formulaire déguisé en
> ListBox
> et pour gérer les double clic, tu poses un bouton transparent sur la ligne
> complète au premier plan : pour savoir sur quel contrôle tu es focalisé,
> tu
> te sert de X et de Y de l'événement MouseMove()... Pour le coté look, tu
> peux
> regarder ce tutoriel
> (http://argyronet.developpez.com/office/access/highlightrecord/) que j'ai
> écrit pour la communauté...
>
> Bonne journée
> --
> Argy
> http://argyronet.developpez.com/
> Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
> VBA pour Office 2007 (ISBN 2742983910)
>
>
>





Avatar
RideHickul
Wow !

Effectivement, c'est une piste que je vais suivre ...

Je vais encore avoir un problème car dans votre exemple, le nombre de champs
en colonne est connu (6).
Ce n'est pas mon cas (les colonnes sont déterminées par les données d'une
table).

Ceci dit, c'est une excellente piste qui me laisse entrevoir la solution :
- Fixer au départ le "nombre maximum" de champs (environ 50 dans mon cas) et
mettre autant de label et de champs sur le form.
- Compter le nb de champs nécessaire (un recordcount sur une requête
regroupement)
- Masquer à l'ouverture du form ceux inutilisés.

Etes-vous d'accord sur la méthode ?

Dingue que ce soit aussi fastidieux d'afficher des chiffres formatés venant
d'une analyse croisée !
En tout cas, merci pour cette piste ! (je séchais lamentablement !)

RideHickul


"Argyronet" a écrit dans le message de
news:
Bien oui, effectivement...

mais en fait, vous pouvez procéder comme suit :
Créez un formulaire vierge dans la base de données "les comptoirs"
Si vous ne l'avez pas , técéhargez-là ici :
http://argyronet.developpez.com/office/access/Comptoirs/Comptoirs.mdb

Dans ce formulaire avec en-tête et pied, vous posez 6 labels en en-tête
nommés lbl0 à lbl5 puis 6 textbox indépendants nommés txt0 à txt5.

recopiez ce bloc de code dans la classe du formulaire :
Option Compare Database
Option Explicit

Private Sub Form_Load()
FillMyFormWithPivotDemo
End Sub

Private Sub CreateMyQuery(ByVal QueryName As String, ByVal SQL As String,
Optional ByRef FieldsNames As String)
Dim oQDF As DAO.QueryDef
Dim oFLD As DAO.Field
Dim F As Integer

On Error Resume Next
FieldsNames = ""
Set oQDF = CurrentDb.QueryDefs(QueryName)
If Err <> 0 Then
Err.Clear
'N'existe pas alors on la créé
Set oQDF = CurrentDb.CreateQueryDef(QueryName, SQL)
Else
'Exite déjà donc on met à jour sa propriété SQL
oQDF.SQL = SQL
End If
For Each oFLD In oQDF.Fields
F = F + 1
FieldsNames = FieldsNames & oFLD.Name & IIf(F >= oQDF.Fields.Count,
"", ";")
Next
Set oQDF = Nothing
End Sub

Private Sub FillMyFormWithPivotDemo()
Dim oCTL As Control

Const MY_QUERY As String > "qry_PivotTestComptoirs"
Const QUARTET_STRING As String = "'Trim
1','Trim 2','Trim 3','Trim 4'"
Const QUOTE As String = """"
Const LABEL_PREFIX As String = "lbl"
Const TEXTBOX_PREFIX As String = "txt"

Dim strQueryFields As String
Dim SQLCommand As String
Dim straFields() As String
Dim F As Integer

SQLCommand = "TRANSFORM Sum(CCur([Détails commandes].[Prix
unitaire]*[Quantité]*(1-[Remise (%)])/100)*100) AS MontantProduit"
SQLCommand = SQLCommand & vbCrLf & "SELECT Catégories.[Nom de
catégorie], Year([Date commande]) AS AnnéeCommande"
SQLCommand = SQLCommand & vbCrLf & "FROM Catégories INNER JOIN
(Produits
INNER JOIN (Commandes INNER JOIN [Détails commandes] ON Commandes.[N°
commande] = [Détails commandes].[N° commande]) ON Produits.[Réf produit] > [Détails commandes].[Réf produit]) ON Catégories.[Code catégorie] > Produits.[Code catégorie]"
SQLCommand = SQLCommand & vbCrLf & "WHERE (((Commandes.[Date commande])
Between #1/1/1997# And #12/31/1997#))"
SQLCommand = SQLCommand & vbCrLf & "GROUP BY Catégories.[Nom de
catégorie], Year([Date commande])"
SQLCommand = SQLCommand & vbCrLf & "PIVOT " & Chr(34) & "Trim " &
Chr(34) & " & DatePart(" & Chr(34) & "q" & Chr(34) & ",[Date commande],1)
In
(" & QUARTET_STRING & ");"

Call CreateMyQuery(MY_QUERY, SQLCommand, strQueryFields)
Debug.Print strQueryFields
straFields = Split(strQueryFields, ";")
For F = LBound(straFields()) To UBound(straFields())
Set oCTL = Me.Controls(TEXTBOX_PREFIX & F)
oCTL.ControlSource = "=[" & straFields(F) & "]"
Set oCTL = Me.Controls(LABEL_PREFIX & F)
oCTL.Caption = straFields(F)
Next
Me.RecordSource = MY_QUERY
Me.Requery
End Sub

Appuyez sur F5 dans le formulaire et surprise !!!
A vous d'adapter pour vos cas mais je pense qu'avec cet exemple, vous
arriverez à vos fins...
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"RideHickul" a écrit :

Salut Argyronet,

Merci pour ta réponse.
Effectivement, le ListView bof bof ...

On a donc que la possibilité de passer par le sous-formulaire ... (super
ton
tuto, y'a des idées que je vais reprendre !)
Mais ...

Si un sous-formulaire c'est bon pour des requêtes sélection "normales",
je
ne m'en sort pas avec des analyses croisées.
Dans les requêtes analyse croisée, je ne maîtrise pas les "noms des
champs"
qui seront affichés en colonne par la requête.

A partir de là, je ne peut pas bâtir un formulaire sur cette source (la
requête) car les champs changent (les chanchange) !
Il serait peut-être possible de lire la structure de la requete (avec un
QueryDef), puis de créer les champs à la volée ...
Ca me parait un peu chaud à faire, tout ca pour afficher correctement des
chiffres ! (et accessoirement pour mon niveau !)

RideHickul





"Argyronet" a écrit dans le message
de
news:
> Bonjour,
>
> Les 2 seules alternnatives dont tu disposes sont les suivantes :
> ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
> En matière de contrôle OCX : Le ListView (Problème : ill aligne aussi
> les
> entêtes, donc hummm...)
> En matière de facilité et souplesse : Le sous-formulaire déguisé en
> ListBox
> et pour gérer les double clic, tu poses un bouton transparent sur la
> ligne
> complète au premier plan : pour savoir sur quel contrôle tu es
> focalisé,
> tu
> te sert de X et de Y de l'événement MouseMove()... Pour le coté look,
> tu
> peux
> regarder ce tutoriel
> (http://argyronet.developpez.com/office/access/highlightrecord/) que
> j'ai
> écrit pour la communauté...
>
> Bonne journée
> --
> Argy
> http://argyronet.developpez.com/
> Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
> VBA pour Office 2007 (ISBN 2742983910)
>
>
>







Avatar
Philippe
Bonjour

En plus de la solution d'Argyronet (salut au passage ;)) que je connais très
bien, je t'invite à lire cela qui pourrait te donner d'autres inspirations :
http://starec.developpez.com/tuto/listesowc/

Philippe

--
Philippe JOCHMANS
Mail :
Site : http://starec.developpez.com
FAQ PPT : http://powerpoint.developpez.com/faq/
"RideHickul" a écrit dans le message de
news:hafnf1$gip$
Wow !

Effectivement, c'est une piste que je vais suivre ...

Je vais encore avoir un problème car dans votre exemple, le nombre de
champs en colonne est connu (6).
Ce n'est pas mon cas (les colonnes sont déterminées par les données d'une
table).

Ceci dit, c'est une excellente piste qui me laisse entrevoir la solution :
- Fixer au départ le "nombre maximum" de champs (environ 50 dans mon cas)
et mettre autant de label et de champs sur le form.
- Compter le nb de champs nécessaire (un recordcount sur une requête
regroupement)
- Masquer à l'ouverture du form ceux inutilisés.

Etes-vous d'accord sur la méthode ?

Dingue que ce soit aussi fastidieux d'afficher des chiffres formatés
venant d'une analyse croisée !
En tout cas, merci pour cette piste ! (je séchais lamentablement !)

RideHickul


"Argyronet" a écrit dans le message
de news:
Bien oui, effectivement...

mais en fait, vous pouvez procéder comme suit :
Créez un formulaire vierge dans la base de données "les comptoirs"
Si vous ne l'avez pas , técéhargez-là ici :
http://argyronet.developpez.com/office/access/Comptoirs/Comptoirs.mdb

Dans ce formulaire avec en-tête et pied, vous posez 6 labels en en-tête
nommés lbl0 à lbl5 puis 6 textbox indépendants nommés txt0 à txt5.

recopiez ce bloc de code dans la classe du formulaire :
Option Compare Database
Option Explicit

Private Sub Form_Load()
FillMyFormWithPivotDemo
End Sub

Private Sub CreateMyQuery(ByVal QueryName As String, ByVal SQL As String,
Optional ByRef FieldsNames As String)
Dim oQDF As DAO.QueryDef
Dim oFLD As DAO.Field
Dim F As Integer

On Error Resume Next
FieldsNames = ""
Set oQDF = CurrentDb.QueryDefs(QueryName)
If Err <> 0 Then
Err.Clear
'N'existe pas alors on la créé
Set oQDF = CurrentDb.CreateQueryDef(QueryName, SQL)
Else
'Exite déjà donc on met à jour sa propriété SQL
oQDF.SQL = SQL
End If
For Each oFLD In oQDF.Fields
F = F + 1
FieldsNames = FieldsNames & oFLD.Name & IIf(F >=
oQDF.Fields.Count,
"", ";")
Next
Set oQDF = Nothing
End Sub

Private Sub FillMyFormWithPivotDemo()
Dim oCTL As Control

Const MY_QUERY As String >> "qry_PivotTestComptoirs"
Const QUARTET_STRING As String = "'Trim
1','Trim 2','Trim 3','Trim 4'"
Const QUOTE As String = """"
Const LABEL_PREFIX As String = "lbl"
Const TEXTBOX_PREFIX As String = "txt"

Dim strQueryFields As String
Dim SQLCommand As String
Dim straFields() As String
Dim F As Integer

SQLCommand = "TRANSFORM Sum(CCur([Détails commandes].[Prix
unitaire]*[Quantité]*(1-[Remise (%)])/100)*100) AS MontantProduit"
SQLCommand = SQLCommand & vbCrLf & "SELECT Catégories.[Nom de
catégorie], Year([Date commande]) AS AnnéeCommande"
SQLCommand = SQLCommand & vbCrLf & "FROM Catégories INNER JOIN
(Produits
INNER JOIN (Commandes INNER JOIN [Détails commandes] ON Commandes.[N°
commande] = [Détails commandes].[N° commande]) ON Produits.[Réf produit]
>> [Détails commandes].[Réf produit]) ON Catégories.[Code catégorie] >> Produits.[Code catégorie]"
SQLCommand = SQLCommand & vbCrLf & "WHERE (((Commandes.[Date
commande])
Between #1/1/1997# And #12/31/1997#))"
SQLCommand = SQLCommand & vbCrLf & "GROUP BY Catégories.[Nom de
catégorie], Year([Date commande])"
SQLCommand = SQLCommand & vbCrLf & "PIVOT " & Chr(34) & "Trim " &
Chr(34) & " & DatePart(" & Chr(34) & "q" & Chr(34) & ",[Date commande],1)
In
(" & QUARTET_STRING & ");"

Call CreateMyQuery(MY_QUERY, SQLCommand, strQueryFields)
Debug.Print strQueryFields
straFields = Split(strQueryFields, ";")
For F = LBound(straFields()) To UBound(straFields())
Set oCTL = Me.Controls(TEXTBOX_PREFIX & F)
oCTL.ControlSource = "=[" & straFields(F) & "]"
Set oCTL = Me.Controls(LABEL_PREFIX & F)
oCTL.Caption = straFields(F)
Next
Me.RecordSource = MY_QUERY
Me.Requery
End Sub

Appuyez sur F5 dans le formulaire et surprise !!!
A vous d'adapter pour vos cas mais je pense qu'avec cet exemple, vous
arriverez à vos fins...
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)



"RideHickul" a écrit :

Salut Argyronet,

Merci pour ta réponse.
Effectivement, le ListView bof bof ...

On a donc que la possibilité de passer par le sous-formulaire ... (super
ton
tuto, y'a des idées que je vais reprendre !)
Mais ...

Si un sous-formulaire c'est bon pour des requêtes sélection "normales",
je
ne m'en sort pas avec des analyses croisées.
Dans les requêtes analyse croisée, je ne maîtrise pas les "noms des
champs"
qui seront affichés en colonne par la requête.

A partir de là, je ne peut pas bâtir un formulaire sur cette source (la
requête) car les champs changent (les chanchange) !
Il serait peut-être possible de lire la structure de la requete (avec un
QueryDef), puis de créer les champs à la volée ...
Ca me parait un peu chaud à faire, tout ca pour afficher correctement
des
chiffres ! (et accessoirement pour mon niveau !)

RideHickul





"Argyronet" a écrit dans le
message de
news:
> Bonjour,
>
> Les 2 seules alternnatives dont tu disposes sont les suivantes :
> ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
> En matière de contrôle OCX : Le ListView (Problème : ill aligne aussi
> les
> entêtes, donc hummm...)
> En matière de facilité et souplesse : Le sous-formulaire déguisé en
> ListBox
> et pour gérer les double clic, tu poses un bouton transparent sur la
> ligne
> complète au premier plan : pour savoir sur quel contrôle tu es
> focalisé,
> tu
> te sert de X et de Y de l'événement MouseMove()... Pour le coté look,
> tu
> peux
> regarder ce tutoriel
> (http://argyronet.developpez.com/office/access/highlightrecord/) que
> j'ai
> écrit pour la communauté...
>
> Bonne journée
> --
> Argy
> http://argyronet.developpez.com/
> Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
> VBA pour Office 2007 (ISBN 2742983910)
>
>
>