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 :

Macro import fichier excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut Macro import fichier excel
    Bonjour à tous !

    Ayant épuisé tout mon potentiel de recherche ces derniers jours sans pour autant aboutir, je vous sollicite pour quelques conseils ou un petit coup de main !

    Mon objectif est simple : Je possède plusieurs fichiers (avec plusieurs onglets) possédant tous la même structure. Je désire les analyser/comparer dans un fichier global. Le but est donc de pouvoir importer tel ou tel fichier dans l'excel d'analyse en créant un nouvel onglet à chaque fois.

    Je suis pour l'heure capable d'importer les données en codant en dur la localisation des fichiers. Mais mon objectif est de pouvoir in fine choisir quel(s) fichier(s) je désire importer.

    Je n'ai pas réussi à aboutir à l'aide d'une userform. Pour le moment j'en suis rendu à utiliser les fonctions suivantes (la première devrait me permettre de récupérer le nom du fichier choisi et la seconde importer le fichier en question) mais je n'arrive pas à faire le lien entre les deux :


    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
    Sub Nom_fichier()
    With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = True
            .Show
     
        End With
     
    End Sub
     
     
     
     
    Sub Import_fichier()
     
    Set wbdest = ActiveWorkbook
     
    fichier = Dir("F:\AntoineSP\MacroExcel\Cas Test\*.xls")
     
    Do While fichier <> ""
     
    Set wbsource = Workbooks.Open("F:\AntoineSP\MacroExcel\Cas Test\" & fichier) 'open the file
    Set wksNewSheet = wbsource.Sheets("Feuil1") 'select the sheet where data is
    wksNewSheet.Activate 'activation of this sheet
    wksNewSheet.Select
    Range(Cells(2, 2), Cells(7, 5)).Select 'select the data you want to copy
    Selection.Copy 'copy the data selected
    wbdest.Activate 'activate the destination file
     
    i = ActiveSheet.UsedRange.Rows.Count 'count the number of line used in this file
    Range("A11") = i 'L'abscence de cette ligne induit une erreur de comptage malgré une valeur de i correcte...
    Cells(i + 2, 2).Select 'select the cells where you want to paste the data (from first free line)
    ActiveSheet.Paste 'paste the data
    wbsource.Close 'close the current source file
    fichier = Dir 'go to next file in the directory
    Loop 'restart the process with next file
    wbdest.Activate
     
    End Sub


    Je vous remercie par avance pour vos petits conseils !

  2. #2
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Tu peux t'inspirer de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.GetOpenFilename("Classeur Excel, *.xls", , "Sélectionnez le fichier Restit souhaité")

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    Essaies ce
    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
    Sub Nom_fichier()
    Dim noms As Variant
    Dim nom As Variant
      With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        If .Show = -1 Then
          Set noms = .SelectedItems
        Else
          MsgBox "Annulé"
          Exit Sub
        End If
      End With
      For Each nom In noms
        MsgBox nom
      Next nom
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour vos réponses !

    J'ai finalement trouvé un moyen assez simple d'importer mes données dans un nouvel onglet à chaque fois. J'y ai meme ajouté un test pour verifier que le nom de l'onglet créé n'est pas déjà utilisé (cette partie reste encore à améliorer je reconnais. Celà nécessiterait une fonction renvoyant le nom de tous les onglets d'un tableur). Voici le code que j'utilise pour ceux qui seraient interéssés :


    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
    Sub Import_Cas()
     
    Dim Path As String
    Dim resultat As String
    Dim nbr As Integer
    Dim InputFolder As String
        cas = InputBox("Texte ?", "Nom du cas étudié") 'La variable reçoit la valeur entrée dans l'InputBox
        cas2 = cas
    Dim Ws As Worksheet
     
        For Each Ws In ThisWorkbook.Worksheets
        'Renvoie le nom de chaque feuille
       If Ws.Name = cas Then
     
      cas2 = InputBox("Texte ?", "Cas déjà utilisé : dernière chance !")
     
       Else
     
        End If
    Next Ws
     
    If cas <> cas2 Then
    cas = cas2
    Else
    End If
     
        Dim shtoto As Worksheet
     
        Set shtoto = Sheets.Add(After:=Sheets("Pilotage"))
       shtoto.Name = cas2
     
     
    Set wbdest = ActiveWorkbook
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx")
     
    Path = Mid(InputFolder, 1, InStrRev(InputFolder, Application.PathSeparator))
     
     
    fichier = Dir("F:\AntoineSP\MacroExcel\Cas Test\*.xlsx")
     
     
    Do While fichier <> ""
     
    Set wbsource = Workbooks.Open(Path & fichier) 'open the file
    Set wksNewSheet = wbsource.Sheets("Feuil1") 'select the sheet where data is
    wksNewSheet.Activate 'activation of this sheet
    wksNewSheet.Select
    Range(Cells(2, 2), Cells(7, 5)).Select 'select the data you want to copy
    Selection.Copy 'copy the data selected
    wbdest.Activate 'activate the destination file
     
    Sheets(cas2).Select
    i = ActiveSheet.UsedRange.Columns.Count 'count the number of line used in this file
     
    If i = 1 Then
     
    Cells(2, i).Select  'select the cells where you want to paste the data (from first free line)
    ActiveSheet.Paste 'paste the data
     
    Else
     
    Cells(2, i + 2).Select 'select the cells where you want to paste the data (from first free line)
    ActiveSheet.Paste 'paste the data
     
    End If
     
    wbsource.Close 'close the current source file
    fichier = Dir 'go to next file in the directory
    Loop 'restart the process with next file
    wbdest.Activate
     
    End Sub

  5. #5
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Candide met ton code entre les balises [Code] pour une meilleure visibilité (Tu pourras les trouver en cliquant sur le # ).

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

Discussions similaires

  1. Importation fichier excel vers oracle
    Par yousfi.z dans le forum Oracle
    Réponses: 6
    Dernier message: 15/12/2008, 09h11
  2. Importation fichier Excel
    Par amka dans le forum Access
    Réponses: 2
    Dernier message: 01/08/2006, 13h35
  3. Importation fichier Excel dans table Access
    Par kemasse dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 15h12
  4. import fichier excel vers mysql
    Par Groshaeny Roger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/04/2006, 20h31
  5. [SQL Server 2000] erreur lors importation fichier excel
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/03/2006, 09h24

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