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

Access Discussion :

Tableau dynamique, export excel


Sujet :

Access

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Tableau dynamique, export excel
    Bonjour,

    En VBA, j'ai créer une fonction qui me permet de créer mon tableau
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    Public Function ConstitutionTableau(CodEns As String) As Variant
    Dim I As Integer, J As Integer
    Dim NbCol As Integer, NbLigne As Integer
    Dim CodMag As Integer
    Dim Tableau() As Variant
    Dim RcdLigne As ADODB.Recordset
    Dim RcdCol As ADODB.Recordset
    Dim Cnn As ADODB.Connection
    Set Cnn = CurrentProject.Connection
     
    'Recherche du nombre de colonne
    Set RcdCol = New ADODB.Recordset
    RcdCol.Open "SELECT DISTINCT [ens-mag], [cdm-mag] FROM Releve GROUP BY [ens-mag], [cdm-mag] HAVING [ens-mag]='" & CodEns & "'", Cnn
    NbCol = 0
    Do While Not RcdCol.EOF
        NbCol = NbCol + 1
        RcdCol.MoveNext
    Loop
    RcdCol.Close
    NbCol = NbCol + 1 'Pour la première colonne EAN
    'Recherche du nombre de ligne
    Set RcdLigne = New ADODB.Recordset
    RcdLigne.Open "SELECT EAN FROM Releve GROUP BY EAN;", Cnn
    NbLigne = 0
    Do While Not RcdLigne.EOF
        NbLigne = NbLigne + 1
        RcdLigne.MoveNext
    Loop
    RcdLigne.Close
    NbLigne = NbLigne + 1 'Pour ne pas effacer la première ligne de titre
    If NbLigne <> 0 And NbCol <> 0 Then
        'Constitution du tableau
        ReDim Tableau(NbCol, NbLigne)
        'Lecture des magasins
        Set RcdCol = New ADODB.Recordset
        RcdCol.Open "SELECT DISTINCT Releve.[cdm-mag], magasin.[lib-mag] FROM Releve INNER JOIN magasin ON (Releve.[ens-mag] = magasin.[ens-mag]) AND (Releve.[cdm-mag] = magasin.[cdm-mag]) WHERE Releve.[ens-mag]='" & CodEns & "' GROUP BY Releve.[cdm-mag], magasin.[lib-mag]", Cnn
        'Constitution des colonnes du tableau
        Tableau(1, 1) = "EAN"
        For I = 2 To NbCol
            Tableau(I, 1) = RcdCol.Fields("lib-mag")
            RcdCol.MoveNext
        Next I
        RcdCol.Close
        'Constitution des lignes du tableau
        'Lecture des ean
        Set RcdLigne = New ADODB.Recordset
        RcdLigne.Open "SELECT EAN FROM Releve GROUP BY EAN;", Cnn
        For J = 2 To NbLigne
            Tableau(1, J) = RcdLigne.Fields("EAN")
            RcdLigne.MoveNext
        Next J
        RcdLigne.Close
        ' Remplit le tableau de valeurs.
        Dim IcolRef As Integer
        Dim JLigneRef As Integer
        Set RcdLigne = New ADODB.Recordset
        RcdLigne.Open "SELECT Releve.EAN, magasin.[lib-mag], Releve.Prix FROM (Releve INNER JOIN magasin ON Releve.[cdm-mag] = magasin.[cdm-mag]) INNER JOIN enseigne ON Releve.[ens-mag] = enseigne.CDEENS WHERE Releve.[ens-mag]='" & CodEns & "' ORDER BY magasin.[lib-mag]", Cnn
     
        Do While Not RcdLigne.EOF
            'Recherche l'indice de la colonne
            For I = 2 To NbCol
                If Tableau(I, 1) = RcdLigne.Fields("lib-mag") Then
                    IcolRef = I
                    Exit For
                End If
            Next I
            'Recherche de l'indice de la ligne
             For J = 2 To NbLigne
                If Tableau(1, J) = RcdLigne.Fields("EAN") Then
                    JLigneRef = J
                    Exit For
                End If
            Next J
            Tableau(IcolRef, JLigneRef) = RcdLigne.Fields("Prix")
            RcdLigne.MoveNext
        Loop
        RcdLigne.Close
    End If
    ConstitutionTableau = Tableau
     
    End Function
    Cette fonction marche niquel sauf que maintenant j'aimerai exporté ce tableau sous excel, comment faire ?
    Help me

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    si j'ai bien compris tu remplis un tableau en mémoire et tu souhaites l'exporter vers Excel.

    Je pense que tu pourrais utiliser l'automation Excel, pour parcourir ton tableau et les cellules d'une feuille de calcul.

    Tu trouveras des pistes sur l'automation dans la FAQ / Sources et mon tutoriel Export vers Excel (lien dans ma signature).

Discussions similaires

  1. [AC-2010] Export d'un tableau croisé dynamique vers Excel
    Par AYARINHO dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/06/2014, 14h33
  2. Réponses: 1
    Dernier message: 17/06/2014, 15h45
  3. Réponses: 1
    Dernier message: 23/01/2009, 09h59
  4. exporter tableau croisé dynamique vers Excel
    Par TOMITOMAS dans le forum Access
    Réponses: 3
    Dernier message: 26/02/2007, 07h36
  5. filtrer tableau croisé dynamique sous excel
    Par kernel57 dans le forum Excel
    Réponses: 7
    Dernier message: 17/11/2006, 14h18

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