IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Appliquer le même tri sur le formulaire et sur l'état [AC-2013]


Sujet :

IHM

  1. #21
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,


    Au lieu de

    qui provoque sans doute un tri de la source dans les entrailles d'Access (?), ce tri prenant alors le pas sur l'ordre initial des enregistrements.

    Essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"rLaSource")
    Une ruse pour que Access aille chercher la valeur à un autre endroit que dans la source de l'état proprement dite.
    Sans garantie pour la rigueur de mon explication, mais ça a l'air de marcher.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  2. #22
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Ta ruse fonctionne Claude, je te remercie, je continue mes tests

  3. #23
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Bon et bien voila tout fonctionne comme je veux, finalement le système est bien et je vais fonctionner comme ça.

    Une petite question toutefois, à quoi sert le Me.Requery dans le code sur Form_Close car ça fonctionne aussi sans ?

    Merci à tout ceux qui m'ont aidé et en particulier à Claude

  4. #24
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Une petite question toutefois, à quoi sert le Me.Requery dans le code sur Form_Close car ça fonctionne aussi sans ?
    C'est une erreur : sans doute un copier-coller un peu trop large !

    Malheureusement vu trop tard : le délai est passé pour corriger le biais dans le billet

    À la prochaine.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #25
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Ok c'est pas grave, en tous cas c'est corrigé chez moi

    Une question supplémentaire en rapport avec ce code.

    Pour le moment, je l'utilise sur plusieurs formulaires différents, chacun basé sur sa propre requête et avec son propre code.

    Je voudrais intégrer tous ces formulaires dans un seul et unique, et modifier chaque fois les données affichées grâce à différents boutons.

    Sur chacun de ces boutons, j'ai donc appliqué le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim q As QueryDef
    Set q = CurrentDb.QueryDefs("R_MaRequete")
    q.SQL = "LaRequeteCorrespondantACeQueJeVeuxAfficher"
    Me.RecordSource = Me.RecordSource
    Set q = Nothing
    Mais maintenant comment vérifier quelle requête est active au moment où on veut trier pour lui appliquer le code de tri ?

  6. #26
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Je ne comprends pas la question.

    Peux-tu montrer un dessin ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #27
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Rien n'est encore fait, c'est un projet. Je vais essayer d'être un peu plus clair.

    J'ai un formulaire principal qui affiche, pour des clients, des séjours auxquels ils ont participé ou vont participer.

    Chaque séjour comporte évidemment plusieurs champs (comme sur le dessin de la page précédente).

    Je voudrais par exemple avoir, sur un bouton, accès aux séjours en cours; sur un autre, à ceux qui sont terminés; sur un autre encore, ceux en cours de traitement, etc, mais tout ceci dans le même formulaire.

    J'ai donc basé mon formulaire sur une requête avec les données brutes des séjours, puis j'ai affecté à chacun des autres boutons (avec le code ci-dessus) une modification de la requête de départ pour afficher les informations que je veux.

    Mais je voudrais aussi rendre possible le tri avec ton code de la page précédente. La question est donc comment faire prendre en compte la bonne requête au bon moment dans le code de btTrier ?

  8. #28
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Quelque chose comme ceci ?

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #29
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Heu non

    Sur ton screenshot de la page précédente, le formulaire au départ, il y a 7 colonnes.

    Ce formulaire sera affiché comme cela à son ouverture.

    Au-dessus de ces colonnes, il y aura plusieurs boutons, chacun d'eux modifiant à la volée la requête de ce formulaire pour afficher d'autres informations, avec le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim q As QueryDef
    Set q = CurrentDb.QueryDefs("R_MaRequete")
    q.SQL = "LaRequeteCorrespondantACeQueJeVeuxAfficher"
    Me.RecordSource = Me.RecordSource
    Set q = Nothing
    Par exemple sur un bouton on aura uniquement les séjours compris entre telle et telle date, sur un autre uniquement ceux d'une durée supérieure à 7 jours, sur un autre encore ceux d'une ville précise.

    Chaque pression d'un bouton modifie donc bien la requête source à la volée pour afficher les informations voulues.

    Un autre bouton rétablira la requête de départ et donc le formulaire dans son mode d'affichage original, tout comme sa fermeture d'ailleurs, ce que fait ton code sur Form_Close de la page précédente.

    Etant donné que chaque pression d'un bouton modifie la requête, comment vais-je pouvoir utiliser ton système de tri ?

  10. #30
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Par exemple sur un bouton on aura uniquement les séjours compris entre telle et telle date, sur un autre uniquement ceux d'une durée supérieure à 7 jours, sur un autre encore ceux d'une ville précise.
    Ce que tu demandes ressemble à ce qu'on appelle souvent : « un formulaire avec recherche multicritère ».

    Regarde ici : http://claudeleloup.developpez.com/t...-multicritere/, je crois qu'avec cette méthode, il « suffit » d'adapter ta requête actuelle pour y inclure la référence aux contrôles filtreXXX décrits dans le tutoriel.

    Je te suggère de clôturer maintenant cette discussion-ci qui porte déjà le drapeau et dont le contenu s'écarte de plus en plus de la question initiale.

    Au plaisir de te recroiser.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #31
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    En effet ça y ressemble sauf que dans mon cas les requêtes sont prédéfinies à l'avance par les boutons.

    Je vais essayer de m'en inspirer.

    Sujet clos merci pour tout

  12. #32
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Désolé de réouvrir ce sujet, tout fonctionne très bien mais je voudrais intégrer une gestion d'erreur sur le code de btTrier_Click() car j'ai 12 colonnes dans mon formulaire, la possibilité de trier sur chacune de ces colonnes et si par exemple l'utilisateur entre par erreur deux fois le même chiffre dans les cases, le tri se fait sur le premier trouvé mais on ne voit pas le conflit.

    Comment en VBA vérifier que la valeur d'un triXXXX n'est pas la même que celle d'un autre triXXXX, ou encore que les triXXXX dont la valeur n'est pas égale à 0 sont bien incrémentés de 1 en 1, et si c'est le cas avoir un msgbox le disant ?

    Merci

  13. #33
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    BONJOUR,

    Par exemple en complétant ]Private Sub btTrier_Click() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub btTrier_Click()
      Dim bOK As Boolean
      Dim i As Integer
      Dim j As Integer
      Dim ctl As Control
      Dim sClauseOrder As String
      Dim q As QueryDef
      'Compter les arguments de tri
      i = 0
      For Each ctl In Me.Controls
        If ctl.Name Like "tri*" Then
            If ctl <> 0 Then i = i + 1
        End If
      Next ctl
      If i = 0 Then 'pas d'argument => ordre naturel
          Set q = CurrentDb.QueryDefs("rLaSource")
          q.SQL = "SELECT * FROM LaTable;"
          'Actualiser le formulaire
          Me.RecordSource = Me.RecordSource
          Exit Sub
      End If
      'quand on arrive ici, on sait qu'il y a i tris à opérer
      'Tu veux donc vérifier qu'ils sont numérotés de 1 à i
      For j = 1 To i
        bOK = False
        For Each ctl In Me.Controls
          If ctl.Name Like "tri*" Then
              If ctl = j Then bOK = True
          End If
        Next ctl
        If bOK = False Then
            MsgBox "L'ordre de tri n'est pas correctement mentionné !", vbCritical
            Exit Sub
        End If
      Next j
      'Construire la clause Order
      sClauseOrder = " ORDER BY "
      For j = 1 To i
        For Each ctl In Me.Controls
          If ctl.Name Like "tri*" Then
              If ctl = j Then
                  sClauseOrder = sClauseOrder & Right(ctl.Name, Len(ctl.Name) - 3)
                  If Me("opt" & Right(ctl.Name, Len(ctl.Name) - 3)) = 0 Then
                      sClauseOrder = sClauseOrder & " DESC"
                  End If
                  sClauseOrder = sClauseOrder & ","
              End If
          End If
          Next ctl
      Next j
      'Supprimer la dernière virgule
      sClauseOrder = Left(sClauseOrder, Len(sClauseOrder) - 1)
      'Construire le sql de rLaSource
      Set q = CurrentDb.QueryDefs("rLaSource")
      q.SQL = "SELECT * FROM LaTable " & sClauseOrder & ";"
      'Actualiser le formulaire
      Me.RecordSource = Me.RecordSource
      'Libérer q
      Set q = Nothing
    End Sub
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  14. #34
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Bonjour Claude, merci pour la rapidité de ta réponse. Je regarde ça d'ici peu et te donne un retour.
    A plus tard.

    Bon et bien voila, j'ai testé et bien c'est parfait que dire de plus

    Juste une petite question pour ma compréhension personnelle, le exit sub à la ligne 20 est il vraiment nécessaire, car c'est pareil sans . Et pour celui de la ligne 33 ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Probleme sur un formulaire basé sur une vue
    Par mattmax dans le forum IHM
    Réponses: 0
    Dernier message: 02/08/2013, 14h19
  2. Réponses: 6
    Dernier message: 23/04/2013, 11h14
  3. Réponses: 3
    Dernier message: 24/09/2008, 08h54
  4. Réponses: 1
    Dernier message: 28/03/2007, 19h20
  5. [Formulaire]saisie sur deux formulaires
    Par liazidf dans le forum IHM
    Réponses: 5
    Dernier message: 06/02/2007, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo