Copier/coller sur 2 workbook différents

L

LUSI

Guest
Bonsoir,

j'essaye de réaliser sous excel (vba) une macro qui me permettrait d'ouvrir un fichier xls à travers une boîte de dialogue, et d'en copier certaines cellules sur sheet d'un fichier xls différent et déjà en cours (ou déjà ouvert)

ma macro donne cela pour le moment :

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 18/04/2006

Application.Dialogs(xlDialogOpen).Show
Range('L14').Select
Selection.Copy
Windows('Classeur.xls').Activate
ActiveSheet.Paste
Windows('projet718.xls').Activate
Range('L22').Select
Application.CutCopyMode = False
Selection.Copy
Windows('Classeur.xls').Activate
Range('B9').Select
ActiveSheet.Paste
Windows('projet718.xls').Activate
Range('L25').Select
Application.CutCopyMode = False
Selection.Copy
Windows('Classeur.xls').Activate
Range('B11').Select
ActiveSheet.Paste
Windows('projet718.xls').Activate
ActiveWindow.Close

End Sub

Mon problème, est que le nom des différents fichier reste enregistré en dur dans la macro (classeur.xls & projet718.xls), alors que je pourrais après l'apparition de boîte de dialogue initiale être amené à selectionner un fichier différent de projet718.xls par exemple.

De la même façon, si le nom de classeur.xls est changé la macro plante.

J'aimerais pouvoir contourner ce problême, donc si vous avez des solutions, celles-ci seraient vraiment les bienvenues. Merci d'avance.

nb : je suis archi-novice en vba.
 

edelweisseric

XLDnaute Occasionnel
Bonsoir Lusi
Bonsoir à tous

Tu trouveras ci-dessous deux macros qui peuvent être intéressantes pour toi :

Public fichier_un As String
Public fichier_deux As String
Public nom_fichier_un As String
Public nom_fichier_deux As String
Public cellule_comptee As String

Sub commence()
fic_ouv_un
Workbooks.Open Filename:=fichier_un
Windows(nom_fichier_un).Activate
Application.ScreenUpdating = False
MsgBox 'Et maintenant le fichier à copier'

fic_ouv_un
Workbooks.Open Filename:=fichier_deux
'''Windows(nom_fichier_deux).Activate
End Sub


Sub fic_ouv_un()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
MsgBox 'Le chemin est : ' & vrtSelectedItem
If fichier_un = '' Then
fichier_un = vrtSelectedItem
Else
fichier_deux = vrtSelectedItem
End If

Next vrtSelectedItem
Else
End If
End With
Set fd = Nothing

End Sub

La première appelle, et la deuxième te demande et nomme les 2 fichiers en fichier_un ou deux. Après peu importe le vrai nom 'xxx.xls', pour le programme, ils se nomment fichier_un ou deux

J'espère t'avoir aidé

Cordialement
 
L

LUSI

Guest
edelweisseric,

Merci pour ton aide.
par contre j'ai quelques petits problème :

quand j'execute ta macro :

- une fenêtre s'ouvre me permettant de choisir le premier fichier.

- le fichier demandé s'ouvre mais parallelement j'ai une erreur qui plante le process 'run time error 13'.

lorsque je 'debug' la ligne suivante se met en surbrillance : Windows(nom_fichier_un).Activate ????

je joins le fichier xls.

certaines choses pourront te sembler évidentes, tant dans module figurant dans le fichier que la ligne de commande ci-dessous, mais pour moi en tant que novice, j'ai du mal à y voir clair.

Merci encore.

nb : a titre d'info, je suis sous excel 2002 (vers. US)
 

edelweisseric

XLDnaute Occasionnel
Bonjour Lusi
bonjour à tous

Tout d'abord, tu n'as pas réussi à déposer ton fichier. Regardes à l'adresse suivante :
Lien supprimé

Le code que j'ai déposé était juste pour te donner la façon, et non directement ce qu'il fallait prendre. Je regarderai ton pb, mais pas avant la fin de soirée, car je suis absent aujourd'hui. Peut être y aura t il une autre personne qui se penchera sur ton code ?

A+

Cordialement
 
L

LUSI

Guest
Bonsoir,

J'ai eu la solution (communiquée par PierreJean) et cela fonctionne à merveille (faut juste adapter). Encore merci à toi pour ton aide ! ;-)

Pour info, voici son code :

Option Explicit
Sub Macro1()
Dim x As Integer
Dim ici As String
Dim ouvert As String
x = Workbooks.Count
ici = ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show
ouvert = Workbooks(x + 1).Name
Workbooks(ouvert).Activate
ActiveSheet.Select
Range('A1:M10').Select
Selection.Copy
Workbooks(ici).Activate
ActiveSheet.Select
Range('A1:M10').Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 499
Messages
2 089 002
Membres
104 002
dernier inscrit
SkrauzTTV