Importer données de plusieurs Classeur [VBA-Excel 2010]

Bonjour tout le monde.

Voilà mon problème :

Je dois réunir plusieurs fichiers excels dans un seul. Tout les fichiers ont les feuilles nommées de la même manière mais certaines feuilles n'existent pas pour tout les fichiers.

J'ai déjà trouver sur internet du code que j'ai adapté à mon problème pour la recherche des fichiers. Donc j'ai l'emplacement et le nom de tous les fichiers que je dois importer.

Le problème, c'est que je dois importer toutes les données sur la bonne feuille, les unes à la suite des autres.

Par exemple, je dois mettre la feuille "fiche signalétique" du fichier 2 à la suite de la feuille "fiche signalétique du fichier" 1 sur la feuille fiche signalétique bilan.

Bien sur vu qu'il y a 120 classeurs (voir plus), les classeurs d'origine sont fermés.

Je vous met en pièce jointe mon fichier où je code. Le code déjà écrit pour cette partie est dans UserformImport et le module Importation.

Je vous préviens par contre, je ne suis pas très très doué en VBA.

42test-sans-nom.xlsm (86.50 Ko)

Bonjour,

En regardant le code que vous avez écrit pour l'importation de vos fichiers, j'ai une question basique : fonctionne-t-il ?

Et quelques remarques :

1) je vois des tableaux dynamiques "nomfich(n)" , " cheminf(n)" alimentés par boucle qui ne sont jamais a priori redimensionnés. Vous devez faire tourner votre routine d'erreur.

2) vous utilisez la classe "Scripting.FileSystemObject", parfait. Pourquoi alors utiliser la fonction "Dir" pour la recherche des fichiers alors que cette classe est entre autres faite pour ça ? (voir ci-dessous exemple de code)

3) je ne vois pas trop l'intérêt de l'instruction "Doevents" alors que vous n'avez aucune opération d'ouverture de fichier

ni de lancement de commande externe à l'application.

Exemple de recherche de fichiers avec la classe "Scripting.FileSystemObject"

Sub import_fichiers()

Dim FSO As Object
Dim Rep_base As String

Rep_base = "D:\"
Set FSO = CreateObject("Scripting.FileSystemObject")
rech_fichiers FSO.GetFolder(Rep_base)

End Sub

Sub rech_fichiers(ByVal dossier As Folder)

    Dim fichier As File

    'récupération noms et chemins de fichier
     For Each fichier In dossier.Files
    '.......
     Next

    'boucle récursive pour sous-dossiers
     For Each sous_dossier In dossier.SubFolders
        If sous_dossier.Attributes <> Directory + System + Hidden Then rech_fichiers (sous_dossier)
    Next

End Sub

J'ai piqué ce code sur internet et adapté à mon cas.

Pour les tableaux, j'ai utilisé redim mais après avoir envoyé le fichier ^^

J'abuse peut être mais si tu as le courage, le temps, et l'envie, je veux bien que tu me simplifie ce code en vrai

Donc ton code d'importation fonctionne.

Dans un premier temps, je regarde demain comment traiter le problème que tu as posé.

Bonsoir,

Pour répondre à votre demande, j'ai créé un nouveau module : importation 2. Ci-joint fichier

127test-sans-nom2.xlsm (84.95 Ko)

Merci beaucoup, c'est parfait !

Rechercher des sujets similaires à "importer donnees classeur vba 2010"