Compiler plusieurs onglets de différents fichiers dans un seul
Résolu
turz
Messages postés
7
Statut
Membre
-
turz Messages postés 7 Statut Membre -
turz Messages postés 7 Statut Membre -
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
- Comment ouvrir un fichier epub ? - Guide
- Renommer plusieurs fichiers en même temps - 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...
wbkSource.sheets("Resultats").Copy After:=synthese.Sheets(synthese.Sheets.Count) et même comme tu dis sheets("Resultats").Copy After:=synthese.Sheets(synthese.Sheets.Count)If wksSource.Name = "Resultats" Then wksSource.Copy After:=synthese.Sheets(synthese.Sheets.Count) End If