Macro pour MAJ données via un second fichier Excel

Pierre_C

XLDnaute Nouveau
Bonjour,
Je débute en macros et je dois en réaliser une permettant ceci:
- activée depuis le fichier Excel 1, elle doit permettre l'ouverture d'un fichier Excel 2 que l'utilisateur doit pouvoir choisir sur son disque dur
- elle doit permettre la récupération de données sur le fichier 2, informations réparties sur 10 onglets différents, pour les insérer au fichier 1
- elle doit fermer le fichier 2 une fois finie l'extraction

En farfouillant sur le forum j'ai réussi à trouver la solution pour proposer à l'utilisateur d'ouvrir un fichier Excel de son choix.
Cependant, je bloque dans la mesure où je ne sais pas comment modifier le code pour que dans la suite du code la référence au fichier 2 se fasse en fonction du fichier ouvert (quel qu'il soit).
Je ne sais également pas comment faire fermer le fichier 2 par la macro.

Je vous colle ci-dessous où j'en suis arrivé, c'est sommaire mais c'est un début:
En rouge, l'endroit où ça bloque pour le nom du fichier

Merci d'avance de votre aide!

Pierre

Code:
Sub CalculETPs()
'
' CalculETPs Macro
'

'
'ouverture du fichier source (dernière version de la fiche programme)
    Dim Fichier, NomFichier$
Fichier = Application.GetOpenFilename("Fichiers Microsoft Office Excel, *.xlsx")
If Fichier = False Then Exit Sub
If Fichier Like "*\" & ThisWorkbook.Name Then MsgBox "Ouverture non autorisée.": Exit Sub
On Error Resume Next
Workbooks.Open Fichier
On Error GoTo 0
NomFichier = Dir(Fichier)
Workbooks(NomFichier).Activate
'récupération des données une par une par copier coller
    Windows( _
 [COLOR="#FF0000"]       "NomFichier" _[/COLOR]
        ).Activate
    Sheets("CA01 Ecarts Techniques").Select
    Range("H14:AK16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks(NomFichier).Activate
    Range("H28:AK30").Select
    Range("AK28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "Dir(Fichier)" _
        ).Activate
    Sheets("CA02 Modèle Technique").Select
    ActiveWindow.SmallScroll Down:=-6
    Range("H14:AN16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F12").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AN30").Select
    Range("AN28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F15").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA03 Infrastructure").Select
    Range("H14:AT16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F18").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AT30").Select
    Range("AT28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F21").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA05 Sécurité").Select
    Range("H14:AT16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F24").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AT30").Select
    Range("AT28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F27").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA06 System Management").Select
    Range("H14:AK16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F30").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AK30").Select
    Range("AK28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F33").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA07 Service Management").Select
    Range("H14:AK16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F36").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=12
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AK30").Select
    Range("AK28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F39").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA08 Intégration").Select
    Range("H14:AH16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F42").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AH30").Select
    Range("AH28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F45").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA09 Env. de Migration").Select
    Range("H14:AT16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX1 - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F48").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=15
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AT30").Select
    Range("AT28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F51").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    ActiveWindow.SmallScroll Down:=6
    Sheets("CA10 Pilotage Projet Prod.").Select
    Range("H14:AT16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F54").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AT30").Select
    Range("AT28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F57").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows( _
        "NomFichier" _
        ).Activate
    Sheets("CA11Org. Build Prod.Run").Select
    Range("H14:AK16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F60").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=6
    Windows( _
        "NomFichier" _
        ).Activate
    Range("H28:AK30").Select
    Range("AK28").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows( _
        "XXX - Calcul des ETP CC du 20 Juin à fin Avril avec Avenant (Vue par CA) 20120613 V0.o.xls" _
        ).Activate
    Range("F63").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-39
    Range("F6").Select
    Application.CutCopyMode = False
    Calculate
    Sheets("XXX").Select
'ici, manque un code pour faire fermer le fichier 2 par la macro
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Macro pour MAJ données via un second fichier Excel

Bonjour.
Ne réactivez pas le classeur destinataire qui est celui qui contient la macro si j'ai bien compris.
Comme ça ce sera toujours ActiveWorkbook.
N'utilisez aucun Activate ni Select jamais nulle part.
La feuille destinatrice dans ThisWorkbook est toujours connue sous son CodeName.
À +
 

Pierre_C

XLDnaute Nouveau
Re : Macro pour MAJ données via un second fichier Excel

La macro n'a pas apprécié la suppression de tous les .Activate et les .Select
Elle bloque toujours sur des liaisons sur le fichier 2 qui l'empêchent de tourner, je n'arrive pas à supprimer ces liaisons.

Edition: avec un peu de persévérance, ça marche finalement! Merci!
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
112

Statistiques des forums

Discussions
312 109
Messages
2 085 386
Membres
102 881
dernier inscrit
Talib