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
 

Ikito

XLDnaute Occasionnel
Bonjour HelloDy,

S'ils sont ouverts :
VB:
source.Activate
destination.Activate
S'ils ne le sont pas, il faut ouvrir le classeur nécessaire :

Code:
Workbooks.Open(source)
Workbooks.Open(destination)
 

HelloDy

XLDnaute Junior
Coucou Ikito,

Merci de ta réponse. Malheureusement ce n'était pas du tout ma question ^^

En tout cas merci quand même d'avoir pris du temps pour me répondre.


Elo
 

Ikito

XLDnaute Occasionnel
HelloDy,

Pardon j'avais seulement lu une question dans ton message d'avant, à savoir :
quelle serait la commande pour activer l'un des fichiers ?
Je poste une réponse d'ici ce soir ou demain matin (suivant mon temps libre) si tu n'as pas encore trouvé ton bonheur.
 

Robert

XLDnaute Barbatruc
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
 

Robert

XLDnaute Barbatruc
Re,

Pour moi, Nommer un fichier signifie Enregistrer sous... Je ne comprends pas ta question.
 

HelloDy

XLDnaute Junior
Ah désolée si je m'exprime mal... Quel termes tu utilises quand tu "nommes" une plage de cellules du coup ?
Sinon pas grave, merci quand même pour ton aide :)
 

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+
 

HelloDy

XLDnaute Junior
Bonjour job75,

Merci beaucoup !
Ca a l'air de fonctionner comme je le voulais, je vais tester ça et si jamais j'ai des questions je me permettrai de revenir vers toi :)

Merci encore.


Elo
 

Discussions similaires


Haut Bas