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

Macros et VBA Excel Discussion :

Difficulté projet d'intégration de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Gestionaire
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionaire
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Par défaut Difficulté projet d'intégration de données
    Bonsoir à tous,

    Je me suis lancé récemment dans un projet d’intégration de données sous EXCEL, et non sans mal puisque mon expérience de ce point de vue est relativement limité (quelques bases en langage SAS et SQL acquises à l’université).

    Pour faire court, je dispose de 2 fichiers .xls contenant mes tables de données sources (+de 140 colonnes par fichiers), et je souhaiterais rapatrier certaines colonnes de ces 2 fichiers vers 1 seul et unique fichier moins indigeste.

    Mon intuition était de créer un masque « à la main » avec les intitulés de colonnes que je souhaite voir apparaitre, et d’utiliser ensuite le générateur de macro lorsque je copierai/collerai le contenu des champs pour récupérer le code VBA que j’associerais à un bouton macro chaque fois que je voudrais renouveler l’opération.

    Néanmoins, j’ai conscience des risques de fiabilité et du manque d’élégance de la manœuvre.

    Je me suis procurer 3 énormes bouquins sur le langage VBA, mais je ne dispose pas du temps et de l’aisance nécessaire pour qu’aborder la démarche de cette façon soit efficace.

    De fait, j’en appel à votre aimable contribution pour m’éclairer sur le moyen le plus intuitif et cohérent selon vous pour gérer ce problème d’intégration.

    Par avance merci à ceux qui se pencheront sur la lecture de mon sujet,
    Eric.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Dans un premier temps regardes la section Tutoriels de ce forum. (ca sera moins indigeste que les bibles du VBA).
    Reviens ensuite vers nous avec des questions concrètes sur tes difficultés.

    De fait, j’en appel à votre aimable contribution pour m’éclairer sur le moyen le plus intuitif et cohérent selon vous pour gérer ce problème d’intégration.
    Ton problème se situe au niveau de la fusion des fichiers ou des userform d'affichage des données (pour quoi faire cette affichage?) ?

  3. #3
    Membre du Club
    Homme Profil pro
    Gestionaire
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionaire
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Par défaut
    Je n'avait pas prévu dans l’immédiat de mette en place un formulaire d’accès aux données. Il s'agirait plutôt d'une fusion de 2 fichiers vers 1 fichier plus synthétique (en ne retenant que certaines colonnes), pour que la lecture de l'information soit plus souple.

    La procédure semble banale, néanmoins dans les ouvrages dont je dispose à aucun moment il n'est fait l'objet d'exportation de données de plusieurs fichiers excel vers un seul.

    Et à dire vrai j'ai déjà épluché le contenu du forum en espérant avoir plus de succès, mais je me serais probablement égarés

    Quoi qu'il en soit merci, je tache de préciser le contenu de ma demande et revient très vite.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Je me demande pourquoi tu veux coder cela.
    Si la fusion est a faire une seule fois, pourquoi ne pas le faire manuellement?

  5. #5
    Membre du Club
    Homme Profil pro
    Gestionaire
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionaire
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Par défaut
    Oups pardon, je n'ai pas préciser que l'opération de fusion est quasi quotidienne.
    Les données qui me sont remontées sont sur plus de 256 colonnes (c'est la raison qui explique pourquoi ma source de donnée est sur 2 fichiers distincts).

    L'idée étant que je parvienne à automatiser le traitement me permettant de rapatrier certaines colonnes contenues sur ces 2 fichiers vers un unique fichier.

    J'me sens un peu bête maintenant parce qu'en fouinant un peu je suis tombé sur du code qui apparemment permet de faire cette opération de fusion. Mais la base de donnée que j'ai a traiter me parait tellement démesurée, qui plus est il me faut faire du traitement conditionnel la dessus, de fait je m'inquiète assez.

    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
    '------------------------------------------------------------------------------
    ' Macro qui permet de compiler les informations contenues dans
    ' différents fichier pour les regrouper dans un fichier récapitulatif
    ' GCXL
    '-------------------------------------------------------------------------------
    Sub Creer_Recapitulatif()
        Dim wbRecap As Workbook         'fichier recap
        Dim wsRecap As Worksheet        'feuille où on écrit les données
        Dim wbSource As Workbook        'fichier à ouvrir
        Dim wsSource As Worksheet       'feuille où on cherche les données
        Dim DernLign As Integer         'ligne où on écrit les données
        Dim vFichiers As Variant        'noms des fichiers
        Dim i As Integer, k As Integer
        Dim rgRecap As Range            'plage où on copie les données
     
     
        Set wbRecap = ThisWorkbook       'Fichier récapitulatif
        Set wsRecap = wbRecap.Sheets(1)  'on écrit dans la feuille 1 du fichier récapitulatif
     
        ' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
        vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
     
        ' --- Vérifier qu'au moins un fichier à été sélectionné
        If Not IsArray(vFichiers) Then
            Debug.Print "Aucun fichier sélectionné."
            MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
            Exit Sub
        End If
        On Error Resume Next
     
        Application.ScreenUpdating = False
     
        ' --- Boucle à travers les fichiers
        For k = 1 To UBound(vFichiers)
            Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
     
            ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            ' C'est ici qu'on écrit les instructions
            Set wbSource = Workbooks.Open(vFichiers(k))                        'on ouvre le fichier
            Set wsSource = wbSource.Sheets(1)                                  'On copie les données de la feuille 1
            DernLign = wbRecap.Sheets(1).Range("A60000").End(xlUp).Row + 1     'ligne pour écrire le log des fichiers compilés
     
     
            ' - On copie les données vers le fichier Recapitulatif; à adapter
            Set rgRecap = wsRecap.Range("A65000").End(xlUp).Offset(1, 0)
            rgRecap = Time
            With wsSource
                rgRecap.Offset(0, 1) = .Range("B7")
                rgRecap.Offset(0, 2) = .Range("B8")
                rgRecap.Offset(0, 3) = .Range("B10")
                rgRecap.Offset(0, 4) = .Range("B13")
                rgRecap.Offset(0, 5) = .Range("B14")
            End With
     
            wbSource.Close              'fermer fichier
            Set wbSource = Nothing
            ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        Next k
     
        Application.ScreenUpdating = True
        Application.StatusBar = False
     
    End Sub
    Function Selectionner_Fichiers(sTitre As String) As Variant
        Dim sFiltre As String, bMultiSelect As Boolean
     
        sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
        bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
        Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
    End Function
    Que l'auteur me pardonne si j'ai égaré son nom

    Apparemment ce script permet de créer ce fameux fichier récapitulatif de toute pièce.
    Me concernant, j’aurais plutôt souhaité créer un template "tout fait" à la main pour éviter le codage des information de typo et mise en forme. Et ensuite que le macro aille chercher les données dans les fichiers source pour alimenter mon template déjà crée.

Discussions similaires

  1. Difficulté de réalisation d'un projet de base de données
    Par jeremy2007 dans le forum Modélisation
    Réponses: 6
    Dernier message: 10/03/2009, 16h25
  2. Débutant : Intégration de données
    Par 20100. dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/12/2007, 16h48
  3. Projet de base de donnée
    Par indigoo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/02/2007, 18h16
  4. projet et base de donnée
    Par treejar dans le forum Accès aux données
    Réponses: 1
    Dernier message: 10/01/2007, 17h52

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