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 :

Importer des données à partir d'un autre fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut Importer des données à partir d'un autre fichier excel
    Je dois importer des données d'un autre fichier excel, dont la source est : "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx" vers mon document excel ouvert.

    De plus je souhaite que les deux colonnes présentes dans "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx" soit introduites en colonne "K" et "L" dans mon fichier excel ouvert.

    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
     
    Sub Importer()
     
    Dim Chemin As String, Fichier As String, Fichier2 As String
    Chemin = ThisWorkbook.Path & Application.PathSeparator
    Fichier = "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx"
     
      Application.ScreenUpdating = False
        With Workbooks.Open(Chemin & Fichier)
           Range("A2").Select
           Range(Selection, Selection.End(xlDown)).Select
           Range(Selection, Selection.End(xlToRight)).Select
           Selection.Copy
           ThisWorkbook.ActiveSheet.Range("K1").PasteSpecial Paste:=xlPasteValues
           .Close savechanges:=False
        End With
    End Sub
    Une personne aurait un code à me proposer, car mon code ci-dessus ne fonctionne malheureusement pas.

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    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 Importer()
     
        Dim Chemin As String, Fichier As String, Fichier2 As String
     
        '
        Dim wkb As Workbook
        Dim shFrom As Worksheet
        Dim shTo As Worksheet
        Dim varTab As Variant
        '
        '
        Chemin = ThisWorkbook.Path & Application.PathSeparator
        Fichier = "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx"
     
        ' pointeurs
        Set wkb = Workbooks.Open(Chemin & Fichier)
        Set shFrom = wkb.Worksheets("LeNomDeLaFeuilleSource")
        Set shTo = ThisWorkbook.Worksheets("LeNomDeLaFeuilleDestination")
     
        Application.ScreenUpdating = False
     
    '    With Workbooks.Open(Chemin & Fichier)
    '    Range("A2").Select
    '    Range(Selection, Selection.End(xlDown)).Select
    '    Range(Selection, Selection.End(xlToRight)).Select
    '    Selection.Copy
    '    ThisWorkbook.ActiveSheet.Range("K1").PasteSpecial Paste:=xlPasteValues
    '    .Close savechanges:=False
    '    End With
     
        varTab = shFrom.Range(shFrom.Range("A1"), shFrom.Range("A1").End(xlDown))
        shTo.Range("K1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("B1"), shFrom.Range("B1").End(xlDown))
        shTo.Range("L1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    @Philippe PONS, Merci de ta réponse

    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 Importer()
     
        Dim Chemin As String, Fichier As String, Fichier2 As String
     
        '
        Dim wkb As Workbook
        Dim shFrom As Worksheet
        Dim shTo As Worksheet
        Dim varTab As Variant
        '
        '
        Chemin = ThisWorkbook.Path & Application.PathSeparator
        Fichier = "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx"
     
        ' pointeurs
        Set wkb = Workbooks.Open(Chemin & Fichier)
        Set shFrom = wkb.Worksheets("LeNomDeLaFeuilleSource")
        Set shTo = ThisWorkbook.Worksheets("LeNomDeLaFeuilleDestination")
     
        Application.ScreenUpdating = False
     
    '    With Workbooks.Open(Chemin & Fichier)
    '    Range("A2").Select
    '    Range(Selection, Selection.End(xlDown)).Select
    '    Range(Selection, Selection.End(xlToRight)).Select
    '    Selection.Copy
    '    ThisWorkbook.ActiveSheet.Range("K1").PasteSpecial Paste:=xlPasteValues
    '    .Close savechanges:=False
    '    End With
     
        varTab = shFrom.Range(shFrom.Range("A1"), shFrom.Range("A1").End(xlDown))
        shTo.Range("K1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("B1"), shFrom.Range("B1").End(xlDown))
        shTo.Range("L1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
    End Sub
    Du coup sur ton code j'ai uniquement modifié :

    ("LeNomDeLaFeuilleSource") => "Feuil1" (qui est issue de C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx)
    et
    ("LeNomDeLaFeuilleDestination") => "Feuil1"(qui est le nom de la feuille de destination)

    Jusqu'ici tout est bon ?

    Cependant lorsque j'exécute la macro, ce message apparaît : "erreur d'exécution '1004' ".
    Pourtant j'ai bien vérifié mais l'adresse où se trouve les données dont j'ai besoin se situe bien au "C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx".

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 572
    Par défaut
    Bonjour

    Quand les noms contiennent des espaces , ou toujours pour être tranquille, il faut les imbriquer dans des ' (apostrophes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "'C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx'"
    et automatisaiton semble bizarre

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Concernant "automatisaition", c'est une faute de frappe que j'ai fait lors de l'enregistrement du fichier (j'ai bien vérifié dans : fichier -> information, l'adresse est bien : C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx')

    Du coup j'ai fait ce que tu m'as dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       "'C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx'"
    Ça m'indique toujours :


    Nom : erreur d'exécution 1004.png
Affichages : 2086
Taille : 18,7 Ko

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Dans la fenêtre d'exécution, fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ?Dir("C:\Users\fetcheberry\Desktop\perf automatisaiton fabien.xlsx")
    Si ça renvoi le nom du fichier, c'est qu'il existe bel et bien!

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Merci Philippe PONS, ton code marche !

    Par contre à chaque fois que j'exécute ce code le document excel ou je vais piocher les informations s'ouvre.
    Il n'existerait pas une astuce pour fermer ce document automatiquement ?

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 572
    Par défaut
    Bonjour

    Ton message d'erreur montre que tu as 2 fois le chemin : dans ton code tu mets chemin et fichier. Donc ne remet pas le chemin dans ta variable fichier.

    Pour fermer un fichier il faut une ligne close...

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Ok 78chris, je vais bosser sur ça pour régler ce petit problème !

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

Discussions similaires

  1. Importer des données à partir d'un fichier excel fermé
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/06/2019, 10h54
  2. [XL-2007] Importer des données à partir d'un fichier excel
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2011, 19h05
  3. [Débutant] Probleme d'importation des données à partir des fichiers textes
    Par bahja29 dans le forum MATLAB
    Réponses: 3
    Dernier message: 12/03/2009, 16h28
  4. Réponses: 8
    Dernier message: 22/08/2006, 12h51
  5. [SQLCE 2000] Importer des données à partir de fichiers
    Par Friz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/03/2006, 19h39

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