XL 2016 Une macro qui ouvre des fichiers

HelloDy

XLDnaute Junior
Bonjour à tous !

J'aimerais créer une macro qui commence en me demandant d'ouvrir deux fichiers et qui les nomme (par ex "source" et "destination" parce que ce ne seront pas toujours les mêmes fichiers que j'utiliserai) pour ensuite faire des copier/coller de l'un vers l'autre.

Et question subsidiaire : quelle serait la commande pour activer l'un des fichiers ?
par ex :
Range("A1:D4").Copy (dans "source")
Range("A2").Select (dans "destination")
ActiveSheet.Paste

J'espère que c'est assez clair :oops:

Merci d'avance ! :)


Elo
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Élo, bonjour le forum

Le code ci-dessous ouvre les deux fichiers et les enregistre sous (dans le même dossier que le premier classeur ouvert, voir variable CA à adapter), Classeur Source.xlsx et Classeur Destination.xlsx.
Il définit les onglets sources et destination ici le premier onglet de chaque classeur (à adapter)...
Ensuite pour tes copier/coller il ne te reste plus qu'à spécifier chaque fois les onglets du style :

OS.Range("A1:A50").Copy OD.range("A1")

Le code :
VB:
Sub Macro1()
Dim FD As FileDialog
Dim F As Workbook
Dim CS As Workbook
Dim CD As Workbook
Dim OS As Worksheet
Dim OD As Worksheet

Set FD = Application.FileDialog(msoFileDialogOpen)
MsgBox "Choisissez le classeur SOURCE"
With FD
    .AllowMultiSelect = False
    .Show
    Set F = Application.Workbooks.Open(.SelectedItems(1))
End With
CA = F.Path & "\"
ActiveWorkbook.SaveAs CA & "Classeur Source", 51
Set CS = ActiveWorkbook
Set OS = CS.Worksheets(1)
MsgBox "Choisissez le classeur DESTINATION"
With FD
    .AllowMultiSelect = False
    .Show
    Set F = Application.Workbooks.Open(.SelectedItems(1))
End With
ActiveWorkbook.SaveAs CA & "Classeur Destination", 51
Set CD = ActiveWorkbook
Set OD = CD.Worksheets(1)
'etc. ton code de copier/coler
End Sub

[Édition]
Bonjour Ikito, nos posts se sont croisés...
 

HelloDy

XLDnaute Junior
Bonjour Robert,

Merci beaucoup, mais est-ce qu'il serait possible de les ouvrir sans les enregistrer ?
En fait j'aurais juste besoin de connaitre la commande pour ouvrir un fichier et le nommer (comme on nomme une plage de cellules par exemple) afin de pouvoir l'activer par la suite.

Si j'en demande trop je suis désolée ^^

Merci en tout cas !


Elo
 

job75

XLDnaute Barbatruc
Bonjour HelloDy, Ikito, Robert,

En effet il n'est pas nécessaire de modifier les noms des fichiers :
VB:
Sub Copier_Coller()
Dim source As Workbook, destination As Workbook
Application.DisplayAlerts = False 'si un classeur est déjà ouvert
With Application.FileDialog(msoFileDialogOpen)
    MsgBox "Choisissez le classeur SOURCE"
    If Not .Show Then Exit Sub
    Set source = Application.Workbooks.Open(.SelectedItems(1))
    MsgBox "Choisissez le classeur DESTINATION"
    If Not .Show Then Exit Sub
    Set destination = Application.Workbooks.Open(.SelectedItems(1))
End With
'---copier-coller---
source.Worksheets(1).[A1:D4].Copy destination.Worksheets(1).[A2]
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof