Compiler plusieurs onglets de différents fichiers dans un seul
Résolu
turz
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
turz Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
turz Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je cherche à compiler les onglets de plusieurs fichiers qui sont dans un répertoire en un seul fichier. Le problème est que mes fichiers possèdent 3 onglets et je ne m'aimerais récupérer que les onglets 'résultats'.
Serait il possible de dire à la macro de ne récupérer seulement les onglets 'Resultats' dans les fichiers qu'il compile un par un ?
En vous remerciant.
Je cherche à compiler les onglets de plusieurs fichiers qui sont dans un répertoire en un seul fichier. Le problème est que mes fichiers possèdent 3 onglets et je ne m'aimerais récupérer que les onglets 'résultats'.
Sub Importer() Dim nf As String Dim strPath As String Dim synthese As Workbook Dim wbkSource As Workbook Dim wksSource As Worksheet strPath = ActiveWorkbook.Path Set synthese = ActiveWorkbook nf = Dir(strPath & "\*.xlsm") Application.EnableEvents = False Do While nf <> "" If nf <> synthese.Name Then Set wbkSource = Workbooks.Open(Filename:=strPath & "\" & nf) For Each wksSource In wbkSource.Worksheets wksSource.Copy After:=synthese.Sheets(synthese.Sheets.Count) Next wksSource wbkSource.Close False End If nf = Dir Loop Application.EnableEvents = True End Sub
Serait il possible de dire à la macro de ne récupérer seulement les onglets 'Resultats' dans les fichiers qu'il compile un par un ?
En vous remerciant.
A voir également:
- Compiler plusieurs onglets de différents fichiers dans un seul
- Comment réduire la taille d'un fichier - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Impossible de supprimer un fichier - Guide
4 réponses
Bonjour,
Tu remplaces :
par
Tu remplaces :
For Each wksSource In wbkSource.Worksheets wksSource.Copy After:=synthese.Sheets(synthese.Sheets.Count) Next wksSource
par
wksSource.sheets("Resultats").Copy After:=synthese.Sheets(synthese.Sheets.Count)
Merci de ta réponse !
Chaque fichier que je compile contient un onglet Resultats, donc il faut que la compilation aille chercher chaque feuille Resultats dans les fichiers.
De plus j'ai excel qui plante quand je lance la compilation. Peut être est-ce du aux types de fichier que je compile ?! Les fichiers que je compile possède les onglets Resultats cachés...
Chaque fichier que je compile contient un onglet Resultats, donc il faut que la compilation aille chercher chaque feuille Resultats dans les fichiers.
De plus j'ai excel qui plante quand je lance la compilation. Peut être est-ce du aux types de fichier que je compile ?! Les fichiers que je compile possède les onglets Resultats cachés...
Ah ! Chose très bizarre, quand je lance la macro pas à pas (F8), pas de plantage, j'arrive bien à tout compiler....
Peut-être est-ce un problème de mémoire.... Il faudrait donc que je compile tout les onglets Resultats (qui sont cachés) et que je les décache dans le fichier de synthèse pour pouvoir les exploiter.
Peut-être est-ce un problème de mémoire.... Il faudrait donc que je compile tout les onglets Resultats (qui sont cachés) et que je les décache dans le fichier de synthèse pour pouvoir les exploiter.
Bon, tout ça tourne assez bien maintenant, je récupère tout les onglets résultats.
Il faut maintenant que je récupère les infos en valeur de ces onglets et que je les colle dans l'onglet principale : 'Synthèse'. Voilà la macro pour l'instant :
Je n'arrive pas à la modifier pour que au lieu d'effectuer un collage simple, celle-ci effectue un collage spécial par valeur.
Pourriez vous m'aider sur ce point ?!
Merci :) !!
Il faut maintenant que je récupère les infos en valeur de ces onglets et que je les colle dans l'onglet principale : 'Synthèse'. Voilà la macro pour l'instant :
Sub Synthèse() Dim Sh As Worksheet With Sheets("Synthèse") .[A2:Y65536].Clear Application.ScreenUpdating = 0 For Each Sh In Worksheets If Sh.Name <> .Name Then _ Sh.Range("A3:Y" & Sh.[A65536].End(xlUp).Row).Copy .[A65536].End(xlUp)(2) Next .[A2:Y65536].Sort Key1:=.[B3] End With End Sub
Je n'arrive pas à la modifier pour que au lieu d'effectuer un collage simple, celle-ci effectue un collage spécial par valeur.
Pourriez vous m'aider sur ce point ?!
Merci :) !!
Membre de méthode ou de donnée introuvable
Gbinforme:
:o)
au lieu de wkssource ne serait ce pas plutôt wbKsource
bien qu'on puisse s"en passe passer puisque c'est le classeur actif
pour turz
dans cette procédure, je ne vois pas l'utilité de enableevents=false
Bien sûr, tu as raison je n'ai pas copié la bonne partie et comme je n'ai pas eu le courage de créer toute la structure pour tester...