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 :

[VBA-E]Importer des données de fichiers excel fermés


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut [VBA-E]Importer des données de fichiers excel fermés
    Bonjour,

    Je dois consolider des données de plusieurs fichiers excel stockés dans un même dossier. J'ai testé ce code mais il semble fonctionner seulement si tous les fichiers sont ouverts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Range("A1").Select
        Windows("test1.xls").Activate
        Application.CutCopyMode = False
        Range("A1").Copy
        Windows("conso.xls").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Windows("test2.xls").Activate
        Application.CutCopyMode = False
        Range("A1").Copy
        Windows("conso.xls").Activate
        Range("A2").Select
        ActiveSheet.Paste
    Si les fichiers sont fermés, la ligne Windows("test1.xls").Activate
    provoque l'erreur "L'indice n'appartient pas à la sélection".


    Y a-t-il une solution pour rappatrier des données de fichiers fermés ?
    Enfin, est-il possible de lister les fichiers du dossier courant ?


    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Pour travailler sur un fichier fermer tu peux utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Init
    Dim appExcel As Excel.Application
    Dim wbExcel As Excel.Workbook
     
    ' Ouverture du fichier Excel
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open(fileToOpen)
    Set wsExcel = wbExcel.Worksheets(1)
    ...

    Pour les lister le contenu d'un fichier, utilise la commande dir

    P.R

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Dit Preverse t'es sûre de ta méthode pour le travail sur un fichier sans l'ouvrir? parce que j'utilise le même code pour mon programme, et à chaque fois il m'ouvre le fichier!

    sinon non dans ta déclaration tu peux également rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim wsExcel   As Excel.WorkSheet
    Par contre bart64 je te déconseille l'utilisation du .activate, il marche une fois sur deux. Et pour le meilleur focntionnement de ton programme et la bonne lisibilité, c'est bien de faire des déclarations objet comme te suggère Preverse

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    Merci pour ces réponses. Je m'en suis tiré avec ce code :
    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
    For i = 1 To 2
      ' Ouverture du fichier Excel
     
      Dim appExcel As Excel.Application
      Dim wbExcel As Excel.Workbook
      Dim wsExcel As Excel.Worksheet
     
      Set appExcel = CreateObject("Excel.Application")
      Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\xxx\Bureau\xxxx\" _
                   & fichiers(i))
      Set wsExcel = wbExcel.Worksheets(1)
     
      Application.CutCopyMode = False
      wsExcel.Range("A1").Copy
      Windows("conso.xls").Activate
      Range("A" & i).Select
      ActiveSheet.Paste
     
      appExcel.Quit
    Next
    Je vais alors trouver un moyen de supprimer le dernier Activate et de fermer plus proprement les appExcel .
    En revanche, les autres fichiers ne s'ouvrent pas avec la méthode de preverse.

    Peut-être faut-il que tu empêches de l'afficher en utilisant la propriété
    appExcel.Visible = False ?

    Merci à vous

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    Je trouve plus la balise résolu depuis le nouveau design...

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    oui t'a peut être raison, j'utilisais pas le appexcel.visible=false.

    Juste une dernière chose, c'est également bien de vider ta mémoire avec


  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    Merci

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Citation Envoyé par bart64
    Je trouve plus la balise résolu depuis le nouveau design...
    il est en haut dans le lien "outils de la discussion" en faut de ton post c'est une zone de liste
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

Discussions similaires

  1. Importation des données de fichier Excel vers MySQL
    Par franco9 dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2013, 19h14
  2. Code VBA pour importer des données vers Excel
    Par thanmirt dans le forum SDK
    Réponses: 1
    Dernier message: 09/04/2011, 17h53
  3. [Import] [2000] Importer des données venant d'excel
    Par DamKre dans le forum VBA Access
    Réponses: 27
    Dernier message: 05/06/2007, 12h38
  4. comment importer des données bo sur excel
    Par Gecl.paris dans le forum Deski
    Réponses: 1
    Dernier message: 12/02/2007, 10h54
  5. Réponses: 1
    Dernier message: 19/01/2006, 19h22

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