Forum - Questions générale - Sujet n°774

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par 3Stone le 26/10/2016 : 02:22  Sujet n° 774  Dans un état, imposer un tri par VBA

le 17/10/2016 : 20:17
par possible924

Anonyme

visiteur

Bonjour à tous,
Dans un état, l'ordre de tri n'est pas celui de la requête sous jacente, mais celui imposé dans la fenêtre "Trier et grouper".
Je souhaiterais pouvoir imposer l'ordre de tri par VBA, mais je n'ai aucune idée de la façon de procéder.
Merci par avance pour votre aide
Pierre

 sujet clos  Haut
Réponse n° 1
--------
le 17/10/2016 : 23:59
par 3Stone

3Stone

Administrateur

Bonjour,
 
Citation :

Dans un état, l'ordre de tri n'est pas celui de la requête sous jacente, mais celui imposé dans la fenêtre "Trier et grouper".

 
Oui, et c'est normal... inutile d'ajouter un tri à la requête.

 
Citation :

Je souhaiterais pouvoir imposer l'ordre de tri par VBA

 
Le plus simple est de créer des copies de l'état qui va bien et de configurer dans chacun le tri que tu souhaite.
Un état ne contient pas de données et est donc plutôt "léger".

Cordialement,
Pierre (3Stone)
  clos par 3Stone le 26/10/2016 : 02:22  Haut
Réponse n° 2
--------
le 18/10/2016 : 08:06
par possible924

Anonyme

visiteur
Merci pour la réponse.
Cette nuit en réfléchissant au problème, j'ai trouvé une réponse qui marche très bien.
Sur un formulaire, j'ai deux boutons, l'un pour ouvrir l'état en tri alpha sur le nom de l'usager, l'autre en tri numéro de son dossier. Je défini avant l'ouverture la valeur de la variable AlphaNum en 0 ou -1 et à l'ouverture de l'état, le code suivant s'exécute :

Private Sub EntêteÉtat_Format(Cancel As Integer, FormatCount As Integer)
If AlphaNum = False Then
Me.Titre = "Liste des usagers ordonnancement alphabétique"
Else
Me.Titre = "Liste des usagers ordonnancement numérique"
End If
End Sub

Private Sub Report_Load()
If AlphaNum = False Then
Me.OrderBy = "Usager_Nom, Usager_Prénom"
Me.OrderByOn = True
Else
Me.OrderBy = "CléP_Usager"
Me.OrderByOn = True
End If
End Sub

Cher 3Stone, je te souhaite une très belle journée
Pierre
  clos par 3Stone le 26/10/2016 : 02:22  Haut
Réponse n° 3
--------
le 18/10/2016 : 13:26
par 3Stone

3Stone

Administrateur

Bonjour,

Je n'avais pas pensé à cela lorsque j'avais lu "trier par VBA" k

Étant donné que l'on peu même créer un état complet par VBA, comme expliqué par exemple ici.

Ceci dit, l'usage de l'utilisation de variable globale est à éviter...
Une solution plus sûre est d'écrire la valeur dans une zone de texte cachée) et de la lire a partir de l'état.

Cordialement,
Pierre (3Stone)
  clos par 3Stone le 26/10/2016 : 02:22  Haut
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut