Compiler plusieurs onglets de différents fichiers dans un seul

Résolu/Fermé
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013 - 28 mars 2013 à 22:29
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013 - 29 mars 2013 à 14:43
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'.

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:

4 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
28 mars 2013 à 23:40
Bonjour,

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)

0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 10:03
J'ai une erreur de compilation :

Membre de méthode ou de donnée introuvable
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
29 mars 2013 à 11:43
Bonjour,

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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 mars 2013 à 12:05
Bonjour Michel,

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)
0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 13:22
Merci de vos réponses : J'ai fait ceci qui fonctionne :
 If wksSource.Name = "Resultats" Then
       wksSource.Copy After:=synthese.Sheets(synthese.Sheets.Count)
       End If
0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 09:51
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...
0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 09:56
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.
0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 13:47
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 :

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 :) !!
0
turz Messages postés 7 Date d'inscription jeudi 28 mars 2013 Statut Membre Dernière intervention 29 mars 2013
29 mars 2013 à 14:43
Bon j'ai trouvé une solution, à la suite du code précédent je fais :

With Worksheets("Synthèse")
    .Range("A:Y").Copy
    .Range("A:Y").PasteSpecial xlPasteValues
End With

0