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 :

Récupérer des données de différents classeurs [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Ressources humaines
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Récupérer des données de différents classeurs
    Bonjour

    Dans le cadre des travaux de fin d'année, notre programme de remontée des données par salarié nous remonte plusieurs fichiers Excel avec des feuilles différentes et avec des colonnes différentes

    J’aimerais via ACCESS récupérer les données de chaque fichier dans un fichier unique que j'exporterais vers excel.

    La difficulté est celle-ci : Toutes les colonnes de tous les feuilles des classeurs sont différentes.

    Quelqu'un peut il m'aider svp

    Il y a quelques temps, un membre d'un autre forum m'avait fait parvenir un modèle de cahier des charges. Je m'en suis donc inspiré pour présenter ce que je souhaite réaliser

    Merci d'avance pour votre aide

    Cdt

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    A part passer par du VBA pour rechercher les titres des colonnes ensuite les affecter au bon endroit, je ne vois pas...


    @+.

  3. #3
    Membre à l'essai
    Ressources humaines
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Re : aide à la programmation
    Bonjour ZOOM61 et merci

    C la mon souci c que je suis un novice en vba access

    Pourriez vous m'aider à réalider mon projet et dans ce cas pourrais je vous envoyer mon chaier des charges de ce que je désire avoir au final

    Cdt

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Avec cela tu devrais commencer à trouver des solutions.

  5. #5
    Membre à l'essai
    Ressources humaines
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    merci beaucoup

    Cdt

  6. #6
    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,

    c'est étrange car pour charger des données dans Access, il faut qu'elles soit un minimum structurées et donc qu'elles aient des caractéristiques communes.
    Pour ce qui est charger des classeurs Excel massivement, je te recommanderais d'utiliser DAO.

  7. #7
    Membre à l'essai
    Ressources humaines
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Bonjour et merci de m'aider caféine

    Je connais pas du tout ADO

    Pourriez vous m'aider

    Cdt

  8. #8
    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
    en fait c'est DAO ...
    exemple de code qui lit un fichier excel (variable sFic) et qui écrit un fichier avec une fonction personnalisée AddRecord.
    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
    Sub LoadDAO(ByVal sFic As String, ByVal sPhase As String, ByVal CustRange As String, _
                ByVal FieldsRange As String, ByVal DataRange As String)
     
    Dim dbEng As Object
    Dim db As Object
    Dim rec As Object
    Dim recF As Object
    Dim sSQL As String
    Dim sSQLF As String
    Dim sCust As String
    Dim i As Integer
     
        ' ouverture du fichier par DAO
        Set dbEng = CreateObject("DAO.DBEngine.36")
        Set db = dbEng.Workspaces(0).OpenDatabase(sFic, _
                                  False, _
                                  False, _
                                  "Excel 8.0;HDR=NO;")
     
        ' requête pour récupérer le nom du client
        sSQL = "SELECT * FROM " & CustRange
        Set rec = db.OpenRecordset(sSQL, 4)
        sCust = rec.Fields(0)
     
        ' boucle sur toutes les colonnes
        On Error Resume Next
        sSQLF = "SELECT * FROM " & FieldsRange
        Set recF = db.OpenRecordset(sSQLF, 4)
        For i = 0 To recF.Fields.Count - 1
            If recF.Fields(i) & "" <> "" Then
                sSQL = "SELECT * FROM " & DataRange & " WHERE F" & i + 1 & " <> 0 And F" & i + 1 & " & '' <> ''"
                Set rec = db.OpenRecordset(sSQL, 4)
                    Do While Not (rec.EOF)
                        AddRecord sCust, rec.Fields(0), recF.Fields(i), rec.Fields(i), sPhase
                        rec.MoveNext
                    Loop
                Set rec = Nothing
            End If
        Next i
     
    Set recF = Nothing
    Set dbEng = Nothing
    Set db = Nothing
     
     
    End Sub
    Attention toutefois, il s'agit de VBA de niveau intermédiaire/avancé donc pas réalisable si tu es débutant.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/07/2012, 23h44
  2. [XL-2007] Récupérer des données de plusieurs classeurs fermés
    Par hdisnice dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/12/2011, 10h10
  3. Récupérer des données à l'ouverture d'un classeur
    Par sub73 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2007, 18h00
  4. [VBA-E]Récupérer des données dans différents classeurs
    Par christellec20 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/03/2007, 18h32
  5. [VBA-E] Récupérer des données dans différents classeurs
    Par christellec20 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2007, 11h13

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