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 :

Manipulation de Recordset avec DAO


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 110
    Points : 107
    Points
    107
    Par défaut Manipulation de Recordset avec DAO
    Bonjour,
    Je vous soumets un problème pour exporter des données vers xl:

    Par exemple avec la requête suivante:

    ID_Contact | IDFonction_contact | Fonction_contact | Nom_Contact

    Données:
    1 | 1 | Assistant | Alain
    2 | 1 | Assistant | Jean
    3 | 3 | Coordinateur | Etienne
    4 | 3 | Coordinateur | Stéphane

    Je sais exporter toutes les lignes mais ici je voudrais que le résultat dans xl s'affiche de cette manière:

    Assistant
    Alain
    Jean

    Coordinateur
    Etienne
    Stéphane

    Si vous avez une idée...Merci

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A priori, il s'agit d'un simple parcours de recordset

    Tu lis le premier enregistrement, tu mémorises sa fonction, tu l'inscrit dans la première ligne, tu passe à la ligne suivante, tu inscris son nom, tu lis l'enregistrement suivant ... si la fonction est la même tu passes à la ligne suivante et inscrit son nom, sinon, tu sautes une ligne, inscrit sa fonction puis en dessous son nom ...

    Ici, je différencie ligne : Ligne Excel et enregistrement : Ligne Access

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 110
    Points : 107
    Points
    107
    Par défaut
    Je reviens sur le sujet; Merci Tofalu, j'ai suivi ta piste mais le problème persiste au niveau de la mémorisation de IDFonction_contact, voilà le code test que j'essaie de faire fonctionner (il s'agit d'un tableau dan word):

    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
     
    Dim Wdapp As Word.Application
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim intcol As Integer
    Dim intlig As Integer
    Dim i As Integer
     
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("SELECT * FROM tbl_contact")
    Set Wdapp = CreateObject("Word.application")
    Wdapp.Visible = True
    Wdapp.Documents.Open "C:\Document\TransfertContact.doc"
     
    With Wdapp.ActiveDocument.Tables(1)
        intlig = 1
        intcol = 1
        i = rst("IDFonction_contact")
        .Cell(intlig, intcol).Range.Text = i
        intlig = 2
            While Not rst.EOF
                If rst("IDFonction_contact") = i Then
                    .Cell(intlig, intcol + 1).Range.Text = rst("Nom_Contact")
                Else
                    .Cell(intlig, intcol).Range.Text = i
                    i = rst("IDFonction_contact")
                    intlig = intlig + 
                End If
            rst.MoveNext
            intlig = intlig + 1
            Wend
    End With
    ...
    Merci d'avance...

  4. #4
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Points : 83
    Points
    83
    Par défaut
    ce que je ferais sans rentrer dans l'écriture du code (la flemme )
    2 recordsets rst1 et rst2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    rst1 : sélectione juste la colonne IDFonction_contact (en regroupement ) pour avoir toutes les idfonction_contact possible (une seule fois)
     
    j'ouvre une boucle tant que pas à la fin de rst1
     
       creation de rst2 qui sélectionne les enregistrements de table qui ont    pour idfonctioncontact rst1(idfonctioncontact )
       j'exporte l'idfonction_contact 
       j'exporte les enregistrements de rst2
       fermeture de rst2
       je passe à l'enregistrement suivant de rst1
    je boucle
    voilà pour le raisonement en espérant que ca t'aideras

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 110
    Points : 107
    Points
    107
    Par défaut
    Ah oui tiens, je n'y avais pas pensé; je me focalisais sur une comparasion des ID_FonctionContact;
    Je vais essayer comme ça; Merci beaucoup

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 110
    Points : 107
    Points
    107
    Par défaut

    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
     
    Private Sub Commande0_Click()
     
    Dim Wdapp As Word.Application
    Dim db As DAO.Database
    Dim rst1 As DAO.Recordset
    Dim rst2 As DAO.Recordset
    Dim fld As DAO.Field
    Dim intcol As Integer
    Dim intlig As Integer
     
    Set db = CurrentDb()
    Set rst1 = db.OpenRecordset("SELECT DISTINCT [IDFonction_contact] FROM tbl_contact")
     
    Set Wdapp = CreateObject("Word.application")
    Wdapp.Visible = True
    Wdapp.Documents.Open "C:\Mes Documents\Transfert tableau.doc"
     
    With Wdapp.ActiveDocument.Tables(1)
        intlig = 1
        intcol = 1
            While Not rst1.EOF
            .Cell(intlig, intcol).Range.Text = rst1("IDFonction_contact")
            intlig = intlig + 1
            Set rst2 = db.OpenRecordset("SELECT * FROM tbl_contact WHERE [IDFonction_contact]= " & rst1("IDFonction_contact"))
                While Not rst2.EOF
                .Cell(intlig, intcol + 1).Range.Text = rst2("Nom_Contact")
                rst2.MoveNext
                intlig = intlig + 1
                Wend
                rst2.Close
            rst1.MoveNext
            intlig = intlig + 1
            Wend
    End With
    Set Wdapp = Nothing
    rst1.Close
    Set rst1 = Nothing
    Set rst2 = Nothing
    Set db = Nothing
    End Sub
    Merci encore à Tofalu et Coyott

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

Discussions similaires

  1. Définition et manipulation de données avec DAO
    Par Tofalu dans le forum Access
    Réponses: 12
    Dernier message: 08/06/2018, 15h03
  2. [AC-2010] manipulation de recordset adodb avec absolute position, recordcount, move
    Par AlexFred dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2014, 16h31
  3. [DAO] Recordset avec paramètre
    Par guen dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/08/2007, 11h46
  4. Réponses: 1
    Dernier message: 23/03/2007, 09h56
  5. [MFC]Ouverture d'une base de donnee avec DAO
    Par Wyatt dans le forum MFC
    Réponses: 7
    Dernier message: 24/01/2005, 10h06

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