Requete Access 2007
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

Requete Access 2007



  1. #1
    invite05a67b21

    Requete Access 2007


    ------

    Bonjour à toutes et tous,

    je ne sais pas si je suis sur le bon forum, mais j'ai un petit soucis quant à la création d'une requête sous access 2007.

    Je vous explique :

    j'ai une table access, elle se nomme : comp_data

    j'ai des données dans le champB que je voudrais traiter :

    ChampB
    AA-1
    AA-1
    AA-5
    AA-8
    CC-4
    BB-6
    BB-7
    AA-6
    CC-1
    CC-2
    BB-1
    DD-6
    ...

    J'aimerais pouvoir comptabiliser, globalement, le nombre de AA,BB,CC...etc. et que cela me renvoie l'information sous la forme d'un tableau pour les travailler dans excel. Comment puis-je procéder ?

    J'ai essayé de faire une requête avec comptage des doublons... mais je n'arrive pas à mes fins..

    En vous remerciant par avance.

    Silentman

    -----

  2. #2
    invite1445654e

    Re : Requete Access 2007

    chalut a froid
    je ferais une vue avec un substring pour recuperer les deux premiers caracteres
    et ensuite je ferais un group by
    select champb,count(*)
    ...
    group by champb;

  3. #3
    invite8666d089

    Re : Requete Access 2007

    Un petit exemple qui va t'afficher dans un fichier excel les occurrences (sans doublons) des enregistrements de ta table commençant par "AA". Le reste (BB, CC, etc. est facile à adapter).

    D'abord tu tapes la macro suivante sous VBE (Access).

    Code:
    Sub ExportDansXL()
      Dim strTableOuRequette As String
      Dim strXLFile As String, strFeuille As String
      Dim xlApp
      
    ' Nom de la table ou de la requête
      strTableOuRequette = "comptage"
    ' Nom completdu fichier excel
      strXLFile = "C:\exportation\comptage.xls"
    ' Nom de la feuille excel
      strFeuille = "Feuil"
    
    'Supprimer fichier avant export
      If Dir(strXLFile) <> "" Then Kill strXLFile
    
    ' Exporter en excel (9 (OFF2000) dans cet exemple)
      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strTableOuRequette, strXLFile, True, strFeuille
    
    ' On ouvre le fichier Excel
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      xlApp.Workbooks.Open strXLFile
      Set xlApp = Nothing
      Set xlApp = Nothing
    
    End Sub
    Tu crées la requête suivante que tu nommes "comptage"
    Code:
    SELECT Count([comp_data].[ChampB]) AS Total
    FROM [SELECT DISTINCT comp_data.ChampB FROM comp_data]. AS Total
    WHERE Left([comp_data.ChampB],2)="AA";
    Enfin, tu crées le dossier c:\exportation où la macro va créer le fichier Excel et tu l'exécutes.

  4. #4
    invite1445654e

    Re : Requete Access 2007

    Citation Envoyé par Dormeur74 Voir le message
    Un petit exemple qui va t'afficher dans un fichier excel les occurrences (sans doublons) des enregistrements de ta table commençant par "AA". Le reste (BB, CC, etc. est facile à adapter).

    D'abord tu tapes la macro suivante sous VBE (Access).

    Code:
    Sub ExportDansXL()
      Dim strTableOuRequette As String
      Dim strXLFile As String, strFeuille As String
      Dim xlApp
      
    ' Nom de la table ou de la requête
      strTableOuRequette = "comptage"
    ' Nom completdu fichier excel
      strXLFile = "C:\exportation\comptage.xls"
    ' Nom de la feuille excel
      strFeuille = "Feuil"
    
    'Supprimer fichier avant export
      If Dir(strXLFile) <> "" Then Kill strXLFile
    
    ' Exporter en excel (9 (OFF2000) dans cet exemple)
      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strTableOuRequette, strXLFile, True, strFeuille
    
    ' On ouvre le fichier Excel
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      xlApp.Workbooks.Open strXLFile
      Set xlApp = Nothing
      Set xlApp = Nothing
    
    End Sub
    Tu crées la requête suivante que tu nommes "comptage"
    Code:
    SELECT Count([comp_data].[ChampB]) AS Total
    FROM [SELECT DISTINCT comp_data.ChampB FROM comp_data]. AS Total
    WHERE Left([comp_data.ChampB],2)="AA";
    Enfin, tu crées le dossier c:\exportation où la macro va créer le fichier Excel et tu l'exécutes.
    bah non il ne veut pas cela et surtout pas de AA en dur
    il veut le nombre de AA,BB,CC,DD
    donc un truc de ce genre

    Code:
    select table.zone,count(*) from (select Left(ChampB,2) as zone from comp_data) table ;

  5. A voir en vidéo sur Futura
  6. #5
    invite8666d089

    Re : Requete Access 2007

    Je ne vais tout de même pas tout faire. Transformer le "AA" dans le dur en liste de variables n'est pas du niveau d'entrée à Polytechnique ; un débutant en VB y arriverait.

  7. #6
    invite1445654e

    Re : Requete Access 2007

    et pourquoi le faire en vb ?

  8. #7
    invite8666d089

    Re : Requete Access 2007

    Parce que VBE est le langage de développement des macros sous Access. Si tu as mieux, faut pas hésiter.

  9. #8
    invite1445654e

    Re : Requete Access 2007

    Citation Envoyé par Dormeur74 Voir le message
    Parce que VBE est le langage de développement des macros sous Access. Si tu as mieux, faut pas hésiter.
    bah oui puisqu'il avait un probleme de creation de requete

  10. #9
    invite05a67b21

    Re : Requete Access 2007

    bonjour,

    merci pour vos contributions !

    Je souhaiterais en effet faire ça sous Access, si possible avec une requête. L'idée de la macro est bonne mais je ne souhaite pas exporter les données sous excel, les exporter d'access, les traiter et les compter.

    J'essaye d'implémenter ta solution ventilopomme.

    bonne journée,

    silentman

  11. #10
    invite1445654e

    Re : Requete Access 2007

    Citation Envoyé par Silentman Voir le message
    bonjour,

    merci pour vos contributions !

    Je souhaiterais en effet faire ça sous Access, si possible avec une requête. L'idée de la macro est bonne mais je ne souhaite pas exporter les données sous excel, les exporter d'access, les traiter et les compter.

    J'essaye d'implémenter ta solution ventilopomme.

    bonne journée,

    silentman
    en gros tu fais une vue sur ta table
    le fameux select left....
    et c'est a partir de cette vue
    que tu appliques le count et le group by

  12. #11
    invite8666d089

    Re : Requete Access 2007

    Pige pas...

    Dans ta demande, tu écris :
    J'aimerais pouvoir comptabiliser, globalement, le nombre de AA,BB,CC...etc. et que cela me renvoie l'information sous la forme d'un tableau pour les travailler dans excel.
    ...et maintenant :

    je ne souhaite pas exporter les données sous excel
    Un truc m'échappe. La macro que je t'ai donnée lit le nombre d'enregistrements (sans doublons) commençant par "AA" dans le champ ChampB de la table comp_data, les compte (4 occurences dans l'exemple que tu nous as donné), inscrit cette valeur dans la cellule A2 du fichier c:\exportation\comptage.xls et ouvre le fichier Excel. Tu voulais autre chose ?

  13. #12
    invite05a67b21

    Re : Requete Access 2007

    Oui, je souhaite faire la partie de "comptage" sous access sans avoir à utiliser excel.

    Ensuite j'importerai ces données comptées sous excel.

    Cela doit être possible à faire directement sous Access avec la bonne requête, d'où ma question.


  14. #13
    invite8666d089

    Re : Requete Access 2007

    Trois questions pour que les choses soient claires au départ :

    - 1) tous les enregistrements commencent par un bigramme du genre "AA", "BB", etc. Est-ce qu'on peut avoir "AB" ?

    - 2) si j'ai bien compris, tu veux que l'analyse crée une table (=1 tableau) avec deux champs : un champ Bigramme et un champ Occurrences contenant le nombre de fois où le bigramme est présent dans la table comp_data ?

    - 3) si on analyse les enregistrements commençant par le bigramme "AA" dans l'exemple que tu nous as donné, on trouve AA-1(2 fois), AA-5, AA-6 et AA-8. Quel doit être la valeur retenue : 4 ou 5 ?

  15. #14
    invite1445654e

    Re : Requete Access 2007

    Citation Envoyé par Silentman Voir le message
    Oui, je souhaite faire la partie de "comptage" sous access sans avoir à utiliser excel.

    Ensuite j'importerai ces données comptées sous excel.

    Cela doit être possible à faire directement sous Access avec la bonne requête, d'où ma question.

    je l'ai fait sous mysql je pense que tu pourras le faire sans probleme sous access
    tu as donc ta table

    Code:
    select * from test.comp_data;
    idcomp_data	champB
    1	AA-1
    2	AA-1
    3	AA-2
    4	BB-3
    5	CC-4
    6	DD-5

    Code:
    select substring(champB,1,2) from test.comp_data;
    substring(champB,1,2)
    AA
    AA
    AA
    BB
    CC
    DD
    select a.zone,count(*) from (select substring(champB,1,2) as zone from test.comp_data) a group by a.zone;

    Code:
    zone	count(*)
    AA	3
    BB	1
    CC	1
    DD	1
    Je pense que tu peux te débrouiller seul

  16. #15
    invite8666d089

    Re : Requete Access 2007

    Déjà parti en vacances SilenceMan ?

  17. #16
    invite1445654e

    Re : Requete Access 2007

    Citation Envoyé par Dormeur74 Voir le message
    Déjà parti en vacances SilenceMan ?
    avec un tel pseudo silence man
    il ne doit pas être trés bavard

  18. #17
    invite05a67b21

    Re : Requete Access 2007

    Bonjour à vous

    non pas en vacances, mais du boulot... et tant mieux !

    Trois questions pour que les choses soient claires au départ :

    - 1) Uniquement AA / BB / CC / DD
    - 2) Oui c'est ça que je veux
    - 3) Valeur = 5 (AA)


    Je vais voir ce que je peux faire avec ce que tu m'as donne comme info merci pour votre aide, je vous tiens au courant !!

    bonne journée

  19. #18
    invite8666d089

    Re : Requete Access 2007

    Je te mets ton programme en ligne en début d'après-midi. Bravo pour la réactivité.

  20. #19
    invite1445654e

    Re : Requete Access 2007

    quel programme y a rien a fait il lance sa requete depuis access ...
    tu t'ennuies dormeur17 ?

  21. #20
    invite8666d089

    Re : Requete Access 2007

    Alors, c’est beaucoup plus simple qu'il n'y paraît.

    Tu vas créer une table "analyse" comprenant 3 champs dans ta base de données :
    - id_bigramme : NuméroAuto (clé primaire)
    - bigramme : Texte
    - occurrences : Numérique

    Tu tapes Alt+F11 pour accéder à l’éditeur Visual Basic

    Dans le menu de VBE, sélectionner Outils|Références et cocher la bibliothèque Microsoft DAO 3.51 (Access 97) ou Microsoft DAO 3.6 (Access>= 2000). Maintenant, le projet est prêt pour utiliser les Objets DAO et converser avec Access.

    Dans module1, tu colles le code suivant :

    Code:
    Option Explicit
    
    Sub Analyse()
    
        '======================================================================
        ' Données Access utilisant les objets DAO
        '----------------------------------------------------------------------
    
        ' L'exemple s'appuie dans le dur (tu adapteras) sur :
        ' Une base de données nommée « bd1.mdb »
        ' Une table nommée « comp_data » contenant les champs :
        ' - « id_CompData » AutoNumber (clé primaire)
        ' - « ChampB » ( champ texte )
        ' Une table nommée « analyse » contenant les champs :
        ' - « id_bigramme » AutoNumber ( clé primaire )
        ' - « bigramme » ( champ texte )
        ' - « occurrences » ( champ numérique )
    
        '======================================================================
        ' Déclarations générales
        '----------------------------------------------------------------------
        ' Objet Database pour se connecter à la base de données
        Dim db As DAO.Database
        ' Objets RecordSet. rst_r (read) gère les enregistrements en lecture
        ' et rst_w (write) gère les enregistrements en écriture
        Dim rst_r, rst_w As DAO.Recordset
        ' Déclarations non DAO
        Dim sql As String
        Dim nbEnregistrements As Long
        Dim tableau(4) As String
        Dim i As Integer
        
        '======================================================================
        ' ON CHARGE LE TABLEAU AVEC LES 4 BIGRAMMES POSSIBLES
        '----------------------------------------------------------------------
        For i = 1 To 4
          tableau(i) = Chr(64 + i) & Chr(64 + i)
        Next i
        
        '======================================================================
        ' OUVERTURE DE LA BASE DE DONNEES
        '----------------------------------------------------------------------
        Set db = OpenDatabase("c:\exemple\bd1.mdb", False, False)
        
        '======================================================================
        ' EXTRACTION DES DONNEES
        '----------------------------------------------------------------------
        For i = 1 To 4
          sql = "SELECT Count( comp_data.ChampB)FROM comp_data WHERE Left([comp_data.ChampB],2)=" & Chr(34) & tableau(i) & Chr(34) & ";"
          Set rst_r = db.OpenRecordset(sql, dbOpenDynaset)
          Set rst_w = db.OpenRecordset("analyse", dbOpenDynaset)
          rst_w.AddNew
          nbEnregistrements = rst_r.Fields(0).Value
          rst_w.Fields("occurrences").Value = nbEnregistrements
          rst_w.Fields("bigramme").Value = tableau(i)
          rst_w.Update
        Next i
        rst_r.Close
        rst_w.Close
        Set rst_r = Nothing
        Set rst_w = Nothing
        
        '======================================================================
        ' FERMETURE DE LA BASE DE DONNEES
        '----------------------------------------------------------------------
        db.Close ' Ferme la base de données
        Set db = Nothing
        MsgBox "Traitement terminé"
    End Sub
    Il ne te reste plus qu’à presser la touche F5 pour exécuter ce programme.
    Le programme va lire tous les enregistrements de la table comp_data commençant par « AA » et inscrire le total dans la table « analyse ». Idem pour BB, CC et DD.

  22. #21
    invite1445654e

    Re : Requete Access 2007

    mouais une bonne requete lol et cela revient au meme ...

  23. #22
    invite8666d089

    Re : Requete Access 2007

    J'aimerais pouvoir comptabiliser, globalement, le nombre de AA,BB,CC...etc. et que cela me renvoie l'information sous la forme d'un tableau
    .

    Je m'en suis tenu au cahier des charges ()
    Remplir une table (tableau) avec les résultats d'une requête, je ne sais pas faire. Si tu sais, je suis preneur (code).

  24. #23
    invite1445654e

    Re : Requete Access 2007

    oui mais il a dit
    J'ai essayé de faire une requête avec comptage des doublons... mais je n'arrive pas à mes fins..

  25. #24
    invite05a67b21

    Re : Requete Access 2007

    Bonjour,

    merci pour ta grosse contribution dormeur74 !!

    Merci pour votre aide,

    @bientôt


Discussions similaires

  1. Tableau dans access 2007
    Par invite0f16d6f2 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/06/2010, 08h21
  2. formulaire access 2007
    Par invite0f16d6f2 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 21/06/2010, 19h47
  3. Requête sous ACCESS 2003
    Par julau dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 04/06/2010, 14h49
  4. Access 2007
    Par invitefa53bb4a dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/12/2009, 07h59
  5. Question formulaire Access 2007
    Par invited9437926 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 02/10/2007, 09h19