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

VBA Access Discussion :

faire des regroupements avant affichage dans un formulaire [AC-2000]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut faire des regroupements avant affichage dans un formulaire
    Bonjour,

    comment puis je m'y prendre pour travailler sur une portion d'une table avant de l'afficher.

    je m'explique:

    j'ai ma table qui contient les champs suivants (codebanque,codeguichet,lieu,date, numcompte, rib,minimum, maximum)

    je souhaiterais donc regrouper ensemble les lignes identiques sur la date, le rib, minimum,et maximum .
    pour n'afficher qu'une seule ligne (date, rib,min,max) pour un code banque (renommé) , des codes guichets ,
    des lieux (regroupés) et des numéros de comptes differents.

    cf pièce jointe (table et resultats).

    j'aimerais savoir comment comparer les champs(date,rib,min et max) de manière à faire un premier regroupement.

    sous excel vb, cela a été fait en transformant ces 4 champs en caracteres hexadécimal pour permettre une comparaison de la ligne i à la ligne
    (i-1). cela est il possible sous access?


    je pense créer une table temporaire, pour travailler sur les résultats du filtre;
    ou bien puis je le faire directement dans un sous formulaire?


    est-il possible d'utiliser les mêmes méthodes que sous excel (extraire des blocsau sein d'une table ou un formulaire pour les manipuler, et les comparer?)

    Merci de me donner quelques pistes sur la methode à suivre ou de m'orienter vers des tutoriaux.
    Je n'ai rien trouvé sur le site qui pourrais se rapprocher de mon cas.

    J'espère qu'il est faisable sous access2000.

    Merci d'avance!!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut
    Je suis désolé mais là j'ai un peu de mal à comprendre ta question.
    Déja quel est ta clé primaire?
    Tu ne peux pas obtenir ton résultat dans ta table actuelle.

    Il faut que tu passes par des requêtes.

    Et enfin explique l'objectif final, se que tu souhaites faire?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut
    Bonjour,
    c'est vrai que c'est confus.

    la clé primaire de ma table (codebanque,codeguichet,lieu,date,numéro de compte)

    ce que je souhaite faire dans un premier temps, c'est:

    apres avoir effectuer ma requête en fonction des choix effectués dans les listes déroulantes; pouvoir manipuler le resultat de la requête.
    je voudrais comparer les 3 champs(rib,max,min) de chaque enregistrement, de manière a savoir si elles sont identiques.
    afin de ne l'afficher dans le formulaire qu'une seule fois pour le code guichet, code banque et les differents comptes. Comme une cellule fusionnée dans excel.
    est ce plus clair?

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Par défaut
    Je pense que tu devrais créer un formulaire avec tes zones de listes déroulantes, puis 3 zone de liste.

    En gros tu les compares séparement, d'abord par le rib puis par le min puis par le maxi.

    Dans la première zone de liste tu affiches ta requête, avec l'option regroupement. dans ta requête tu affiches ton code banques, ton code guichet, ton lieu et ton rib.
    Sur RIB tu inscrits le critère de liste deroulante RIB.

    Dans la deuxième zone de liste tu affiches ta requête, avec l'option regroupement. dans ta requête tu affiches ton code banques, ton code guichet, ton lieu et ton min.
    Sur Min tu inscrits le critère de liste deroulante Min.

    Dans la troisème zone .....


    Si tu n'y arrive pas regarde le Tuto http://mhubiche.developpez.com/Access/tutoJointures/

    Essaye de comprendre car je crois que ça peut t'aider

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut
    En fait je veux passer par du code VB pour parcourir le résultat de la requête (reqCompte).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FOM TABLECOMPTE WHERE CodeBanque= 30003 et CodeGuichet = 01462

    je voudrais donc que s'il existe le lieu paris1 et paris2 dans le resultat de la requête
    , alors comparer les champs rib,découvert, min et max de chaque lieu entre eux (c'est à dire RIB de paris1 comparé à rib de paris2,ainsi de suite).
    et s'ils sont identiques, me renvoyer la valeur VRAI, sinon FAUX.

    j'ai trouvé des exemples de codes sur les recordset et querydefs, mais comment intégré
    ma condition sur la présence de ces lieux et comparer chaque champ.

    je voudrais utiliser le code suivant.

    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
    Public Sub TriEnregistrementsCompte()
     
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRst As DAO.Recordset
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs("ReqCompte")
    Set oRst = oQdf.OpenRecordset
     
    'Dim rs As DAO.Recordset
    Dim i As Long
     
     'On teste si le recordset n'est pas vide
    If Not oRst.EOF Then
          'S'il n'est pas vide on va au premier enregistrement
          oRst.MoveFirst
          'Tant qu'on est pas arrivé à la fin du recordset
          While oRst.EOF
                .........Traitements
     
              'On passe à l'enregistrement suivant
              nom_du_recordset.MoveNext
          Wend
    End If
     
     
    End Sub
    comment faire référence au champs du resultat de la requête

    j'ai essayé if oRst.fields ; mais il ne me propose pas le nom des champs.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut
    j'ai trouvé , il me fallait faire un select DISTINCT.
    et la fonction recordCount renvoie le nombre de ligne!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2011, 15h09
  2. Réponses: 2
    Dernier message: 19/07/2007, 17h01
  3. Réponses: 7
    Dernier message: 05/01/2007, 12h24
  4. affichage des champs selon critère dans un formulaire
    Par emmablue dans le forum Access
    Réponses: 5
    Dernier message: 31/07/2006, 09h39
  5. [Débutant]Comment faire des tranches de nombre dans une tabl
    Par Jedecouvreaccess dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2005, 08h46

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