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 :

VBA - Importer valeurs Access vers Excel


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut VBA - Importer valeurs Access vers Excel
    Bonjour,

    D'une part, je dispose de valeurs fournies par une requête analyse croisée :

    - en-tête de ligne : produits
    - en-tête de colonne : mois
    - valeur : poids

    Nom : Access.jpg
Affichages : 180
Taille : 38,9 Ko

    D'autre part, j'ai un classeur Excel comportant un tableau configuré de la même manière :

    - en-tête de ligne : produits
    - en-tête de colonne : mois
    - valeur : poids

    Nom : Excel.jpg
Affichages : 155
Taille : 163,3 Ko

    Actuellement, j'alimente mon tableau Excel manuellement chaque mois et j'aimerais automatiser cette procédure.

    Par conséquent, est-il possible de copier une valeur individuelle d'une requête vers une cellule Excel ?

    Exemple :

    - Copier le poids du produit "B" du mois de février de ma requête vers la cellule C3 de ma feuille Excel.
    - Copier le poids du produit "C" du mois de février de ma requête vers la cellule C4 de ma feuille Excel.
    - Copier le poids du produit "B" du mois de mars de ma requête vers la cellule D3 de ma feuille Excel.
    - etc.

    N.B. :

    - J'utilise plusieurs requêtes afin de compléter mon tableau entièrement : Requête 1 = AC / Requête 2 = Privé / Requête 3 = Particuliers, etc.
    - Le tableau Excel et la requête Access ne sont pas toujours identique, d'où ma demande de copier individuellement chaque valeur.

    Cordialement,

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je pense que ce serait plus simple d'exporter tes données source de ta requête croisée et de faire un tableau croisé dynamique dans Excel.

    Là j'ai de la misère à comprendre la logique pour passer de Excel à Access.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'aimerais en effet pouvoir passer par des TCD mais les filtres pour obtenir la partie "AC" ne sont pas les mêmes que ceux pour obtenir la partie "Privés" et ainsi de suite pour chaque sous-division.

    Or, toutes les informations doivent se retrouver dans un seul et même tableau sachant que je n'ai partagé qu'une partie de celui-ci, il est en réalité multiplié par 4 en fonction de nos différents sites.

    J'aimerais juste savoir s'il possible de copier une valeur individuelle d'une requête vers une cellule Excel ? çad copier une cellule d'une requête Access vers une cellule Excel.

    À partir du moment où j'ai ce code, si cela est réalisable, je devrais pouvoir m'en sortir... du moins, je l'espère.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 114
    Points : 1 637
    Points
    1 637
    Par défaut
    Salut,

    Depuis Excel, passe par Power Query pour interroger Access.
    Ajoute un TCD, quelques formules et le tour sera joué.

  5. #5
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Merci pour ta réponse malheureusement, cette solution ne me permet pas d'exécuter ce que je désire.

    En effet, ma source de données ne provient pas de table ou de requête classique mais de requête analyse croisée et celle-ci ne sont pas accessible via Power Query.

    Qui plus est, les tableaux sur lesquelles je travaille doivent respecter une certaine mise en forme et l'utilisation de TCD ne permet pas cette flexibilité.

    Cordialement,

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Uknowho,

    Voici un exemple pour copier une requête dans un tableur Excel, cependant
    - Le tableau Excel et la requête Access ne sont pas toujours identique, d'où ma demande de copier individuellement chaque valeur.
    votre demande devient impossible. Il doit y avoir une certaine rigueur dans la mise en forme. Le code suivant suppose que le début de la saisie des données est à partir de la deuxième ligne. Les produits dans le fichier Excel correspondent aux produits dans la requête. Il y a toujours les 12 colonnes pour les 12 mois.

    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
    Private Sub suCopieExcel()
    On Error GoTo gestion_err:
     
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim fld As Field
        Dim strSQL As String
        Dim i As Integer, j As Integer
     
        Dim oApp As Object
        Dim oWkb As Excel.Workbook
        Dim oWSht As Excel.Worksheet
     
        'Ici c'est la rq  en SQL, j'ai divisé par mois mais il est possible de faire autrement
        ' Les produits sont mis en ordre alphabétique pour être comme dans le fichier Excel
        strSQL = "TRANSFORM Sum(T_Table.Argent) AS Argent " _
        & "SELECT T_Table.Produit FROM T_Table " _
        & "GROUP BY T_Table.Produit ORDER BY T_Table.Produit" _
        & "PIVOT Format([Date_Cle],'mmm') In ('janv','févr','mars','avr','mai','juin','juil','août','sept','oct','nov','déc');"
        'On ouvre un jeu d'enregistrement
        Set rst = db.OpenRecordset(strSQL, 4, 512)
        'On ouvre Excel et on récupère le fichier
        Set oApp = CreateObject("excel.application")
        Set oWkb = oApp.Workbooks.Open("Le_Chemin_Et_Nom_Du_Fichier_Excel_Complet")
        oApp.Visible = True
        Set oWSht = oWkb.Worksheets("Le_Nom_De_La_Feuille")
        j = 2     'On commence à inscrire les données à la deuxième ligne
        Do While rst.EOF = False
            For Each fld In rst.Fields
                If fld.OrdinalPosition <> 0 Then 'On ne saisi pas la première colonne qui est le nom du produit
                    i = fld.OrdinalPosition + 1
                    oWSht.cell(j, i) = fld.Value
                End If
            Next
            rst.MoveNext
            j = j + 1
        Loop
        'On libère les objets
        rst.Close
        Set rst = Nothing
        Set db = Nothing
        oWkb.Close saveChanges:=True
        Set oWSht = Nothing
        Set oWkb = Nothing
        Set oApp = Nothing
     
    Sortie:
    Exit Sub
    gestion_err:
        MsgBox Err.Description & Chr(13) & "Erreur numéro: " & Err.Number & Chr(13) & "Dans la Sub suCopieExcel"
        Resume Sortie
    End Sub
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci beaucoup pour cette réponse, je m'en vais de ce pas tester ceci.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 114
    Points : 1 637
    Points
    1 637
    Par défaut
    Citation Envoyé par Uknowho Voir le message
    Merci pour ta réponse malheureusement, cette solution ne me permet pas d'exécuter ce que je désire.
    Ha ?

    Sachant que l'équivalent d'une requête analyse croisée est un TCD,
    qu'est ce qui t'empêche de récupérer les données permettant de constituer cette dernière ?

    Sérieusement, depuis l'avènement de Power Query, importer ou exporter des données d'Access vers Excel via VBA est obsolète.
    Donc met toi à jour, et utilise des technologies moderne, la maintenance te dira merci.

  9. #9
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Juin 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Cette intervention était elle vraiment nécessaire ?

    Je travaille pour une société et je ne suis pas seul à travailler sur ces tableaux.

    J'en serais propriétaire, je serais le premier à envisager d'autres solutions...

    Par conséquent, à défaut de pouvoir les modifier, j'essaie juste de trouver une solution.

    Dois-je réellement être flagellé pour ça ?

    S'il n'existe pas de solution à ma demande, ainsi soit-il mais ça coûte rien de demander.

  10. #10
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Uknowho,

    La réponse de deedolith est complètement hors sujet. Il existe des circonstances qui justifie très bien de passer par VBA. Un rapport qui doit être produit à chaque mois peut-être automatisé dans une application Access pour un export dans Excel au click d'un bouton de l'application Access pour éviter toute manipulation. Une application Access protégée par un mot de passe n'est pas accessible, idem pour SQL etc...

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  11. #11
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut Robert1957
    Et en plus, il pense que nous avons attendu PowerQuery pour communiquer entre Access et Excel.
    Encore un qui confond culture et confiture.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. Bug Import de Access vers Excel
    Par Peter89 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/09/2012, 11h02
  2. Bug Import de Access vers Excel
    Par Peter89 dans le forum Access
    Réponses: 2
    Dernier message: 13/09/2012, 18h35
  3. [VBA]Importation données Access dans Excel
    Par Maxim0 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/06/2011, 10h07
  4. vba - Import Tables Access sous Excel
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2008, 11h54
  5. [e-2]vba import donnees txt vers excel et réseau local
    Par billx06 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2008, 19h46

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