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 :

Extraire data de cellules de plusieurs fichiers [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut Extraire data de cellules de plusieurs fichiers
    Bonjour,

    J'aimerais pouvoir parcourir tous les fichiers excel qui sont dans un même répertoire et extraire les données de certaines cellules pour les copier dans un nouveau fichier excel. Les fichiers à lire sont composés d'une seule feuille mais cette feuille n'a pas toujours le même nom. Les cellules à lire sont au même endroit. Je pensais créer une nouvelle feuille excel et faire une macro en VBA mais je coince sur cette programmation.
    Merci d'avance pour vos conseils.

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Vous trouverez ci-dessous un exemple de code qui ouvre successivement les fichiers en .xls dans le répertoire NomRepertoire.
    Pour chaque fichier ouvert, la cellule A1 de la première feuille est copiée puis collée dans la feuille FeuilCible du classeur contenant la macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim NomFichier As String, i As Long
    i = 1
    NomFichier = Dir("NomRepertoire")
    Do While NomFichier <> ""
        If Right(NomFichier, 4) = ".xls" Then
            Workbooks.Open NomFichier
            Workbooks(NomFichier).Sheets(1).Range("A1").Copy
            ThisWorkbook.Sheets("FeuilCible").Paste ThisWorkbook.Sheets("FeuilCible").Range("A" & i)
            Workbooks(NomFichier).Close
            i = i + 1
        End If
        NomFichier = Dir
    Loop
    A adapter selon vos besoins. En particulier, les fichiers .xlsx ne seront pas ouverts par le code ci-dessus.

    Cdt

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut Extraire data fichier excel
    Bonjour Ben_L

    Merci pour le code, ça fonctionne impeccablement, je m'étais embarqué avec du code style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DIR *rep = opendir(directory)  
    if (rep != NULL)
      {
       struct dirent *lecture;
    etc....

    Je ne connaissais pas le "Right"

    Bonne journée et encore merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut Fichiers réseau
    Bonsoir Ben_L,
    Je t'envoie ce message car ton code adapté fonctionnait très bien mais lorsque j'ai voulu associer tous les fichiers concernés, j'ai eu l'erreur 1004.
    Historique :
    J'ai testé le programme sur 10 fichiers (copiés-collés) dans un répertoire "Test" et cela fonctionnait très bien, j'ai alors ajouté des fichiers formats identiques de 2 répertoires (environ 130 fichiers) dans ce dernier et cela fonctionnait toujours très bien. comme cela fonctionnait bien , j'ai décidé de copier tous les fichiers des années dans ce répertoire test et lorsque j'ai voulu exécuter la macro, il bloque sur le "Open du fichier". J'ai voulu reprendre un seul fichier dans ce répertoire et à nouveau le même message d'erreur.
    je suis passé sur un autre ordi et même erreur, j'ai copié le tout sur clé USB et placé sur un ordi qui n'est pas en réseau et même erreur. Il faut dire que je travaille en milieu hospitalier avec ordi en réseau avec protection. Mais je ne comprends pas pourquoi la macro fonctionnait bien avec une série de fichiers et tout d'un coup, blocage....
    Merci d'avance pour ton aide à la compréhension.
    electrons

    les répertoires années 2010 puis 2011 et ce pour chaque mois de l'années).

  5. #5
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonsoir électrons,

    Je manque quelque peu d'éléments pour te répondre. Tu peux toutefois vérifier les points suivants :
    1. Quelle est la valeur de 'NomFichier' juste avant d'obtenir l'erreur ?
    2. Essayer de remplacer la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open NomFichier
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open "NomRepertoire" & NomFichier
    NB: la chaîne "NomRepertoire" doit alors finir par le caractère '\'

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut erreur 1004
    Bonjour,

    Avec un peu de retard, je réponds à votre message;
    Le problème est résolu, il fallait le chemin complet du répertoire à ouvrir.

    Merci et bonne journée

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

Discussions similaires

  1. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  2. [XL-2000] Additionner des cellules de plusieurs fichiers
    Par shenmicke dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2014, 00h43
  3. [XL-2003] récupérer valeur d'une cellule, dans plusieurs fichiers placés dans des sous-dossiers
    Par greenfire15 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/08/2012, 09h42
  4. Copier des cellules de plusieurs fichiers et les trier automatiquement
    Par nicethe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2008, 12h40
  5. exporter cellules de plusieurs fichiers sur un seul fichier
    Par sapeur37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2006, 09h46

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