[vba] copier une feuille d'un fichier A sur B - excel

Bonjour,

Bon après avoir trouvé des fonctions qui répondaient à mon sujet, j’ai plein de problèmes (copies qui ne se font pas etc…)

Je redemande donc de l’aide car je ne sais plus du tout comment faire et je dois avoir fini cette macro pour jeudi :?

J’ai deux fichiers Excel Template et des fichiers 1,2,3 etc… Dans le fichier Template il y a une feuille qui s’apelle Toto et dans 1,2,3 etc… une feuille qui s’apelle Tata-1, Tata-2 (pour le fichier 2) etc…

Je dois copier pour chaque fichier 1,2,3 etc… la feuille Tata-1, tata-2 etc… dans le fichier Template après la feuille Toto.

Autrement dit à la fin de l’opération dans Template j’ai comme feuille Toto - Tata-1 (qui vient du fichier1), Tata-2(qui vient du 2) etc…

Je ne sais plus comment faire. Autre détail important, je dois faire des copier/coller par valeurs!

Un très grand merci d’avance !

Pas très clair :

  • 2 fichiers Template ?

  • 2 fichiers : Template + un autre fichier avec 1,2,3 … feuilles

  • plus de deux fichiers ?

  • Supposons que le fichier Template contienne le code :
    comment a-t-il connaissance du nom des fichiers "source" ?

  • Dans Template, tu crées de nouvelles feuilles avec copie par valeur
    Souhaites-tu quand même conserver le format des lignes et colonnes ?

Je vais reformuler mon problème. J’ai refait le code de ma fonction :

For Each fic In dossier.Files
    
    f = fic.Name
    
    Set Fichier_xls_dest = CreateObject("Excel.application")
    Fichier_xls_dest.Workbooks.Open Filename:=DestinationFile, editable:=True
    'destName = Fichier_xls_dest.Workbooks.Name
    'MsgBox (destName)
    Fichier_xls_dest.Application.Sheets.Add.Name = "Toto"
    Fichier_xls_dest.Application.DisplayAlerts = False
    Fichier_xls_dest.ActiveWorkbook.Close savechanges:=True
    Fichier_xls_dest.Application.DisplayAlerts = True
    
    Application.CutCopyMode = False
    Workbooks.Open fic
    ActiveWorkbook.Worksheets("Activité mois").Unprotect (pass)
    Sheets("Activité mois").Copy After:=Workbooks("RA-CF-TMA-2007-M03.xls").Sheets(Workbooks("Toto").Sheets.Count)
    Cells.Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues
    Fichier_xls_dest.Application.DisplayAlerts = False
    Fichier_xls_dest.ActiveWorkbook.Close savechanges:=True
    Fichier_xls_dest.Application.Quit
    Fichier_xls_dest.Application.DisplayAlerts = True
    ActiveWorkbook.Close savechanges:=False
   
   'inode = Importation_donnees_Rnd(file, DestinationFile, "Activité mois", f)
  
                
Next

En gros, je crée une nouvelle feuille qui s’apelle “Toto” dans mon fichier de destination. Puis je veux copier la feuille Activité mois du fichier source et ensuite je fais un copier/coller spécial par valeur dans le fichier de destination, sur l’onglet toto.

le blocage a lieu au moment de la copie : l’indice n’appartient pas à la séléction.

ça plante sur cette ligne ? :

Sheets("Activité mois").Copy After:=Workbooks("RA-CF-TMA-2007-M03.xls").Sheets(Workbooks("Toto").Sheets.Count)