Importer x onglets de y classeurs dans une nouvelle feuille

Fermé
John65536 Messages postés 4 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 1 septembre 2016 - 24 août 2016 à 23:02
John65536 Messages postés 4 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 1 septembre 2016 - 1 sept. 2016 à 19:36
Bonsoir,
J'ai besoin de votre aide pour réaliser une macro capable de:
1-Importer tous les onglets visibles de plusieurs classeurs provenant d'un même dossier pour simplifier :) ( sinon éventuellement si possible une boite de dialogue me demandant de sélectionner les classeurs dans différents fichiers)
2-Les onglets et le nombre de lignes sont variables d'un classeur à l'autre, les onglets ont des entêtes identiques mais ne commencent pas forcement à la même ligne (l'idée est de commencer l'importation après l'entête de colonne "affaires" et à partir de "en cours", et de copier les contenus de tous les onglets les uns en dessous des autres après avoir précisé la direction de production).
'Si possible une boite de dialogue qui simplifierait ça (je ne sais pas comment).
3-Supprimer ensuite les lignes vide pour avoir un fichier bien propre, et surtout ne rien modifier aux classeurs sources (aucune demande d'enregistrement ou de messages inutiles).

J'ai un code qui marche bien pour des classeurs simples avec une seule feuille (même configuration sur chaque feuille et les données empilées les unes en dessous des autres sans espace), j'aimerais que vous m'aidiez à l'adapter svp.
Je voudrai mettre en pièce jointe un fichier exemple, mais je ne trouve pas cette option.

Sub Transferer()
Dim dossier As Object, Fichier As Object
Dim Chemin As String
Dim Derlg As Integer
Dim c As Range

Application.ScreenUpdating = False
Application.DisplayAlerts = True

Derlg = Range("A65536").End(xlUp).Row + 1
Range("A2:N" & Derlg).Clear

Chemin = ThisWorkbook.Path
FName = Dir(Chemin & "\" & "*.xls")
Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)

For Each Fichier In dossier.Files

NomFichier = Fichier.Name
If Not Fichier.Name = "Recap.xls" Then

Derlg = Range("A65536").End(xlUp).Row + 1

Workbooks.Open Filename:=Chemin & "/" & NomFichier

On Error Resume Next

With Workbooks(NomFichier)
.Sheets("Feuil1").Range("A2:N" & Range("A65536").End(xlUp).Row).Copy ThisWorkbook.Sheets("Feuil1").Range("A" & Derlg)
.Close
End With

End If
Next

End Sub


Merci d'avance pour votre aide .



A voir également:

3 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
25 août 2016 à 09:09
Bonjour,

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
John65536 Messages postés 4 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 1 septembre 2016
25 août 2016 à 21:32
Merci de votre réponse, j'ai fait un modèle standard :)
Voici les liens pour les fichiers sources exemple:
https://www.cjoint.com/c/FHztymZsyRD

https://www.cjoint.com/c/FHztw208HQD

Le lien pour le fichier de synthèse:
https://www.cjoint.com/c/FHztzhP7rvD

Merci encore pour vos réponses.
0
John65536 Messages postés 4 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 1 septembre 2016
1 sept. 2016 à 19:36
Bonsoir,
Des propositions?
Merci d'avance.
0