Stocker un classeur après qu'il ait été lu

Bonjour le forum.

Je souhaiterais affecter une macro à un bouton de commande qui demanderait à un utilisateur de sélectionner deux fichiers , puis qui renverrait sur une autre feuille du classeur de la macro un tableau obtenu grâce aux données de ces deux fichiers.

J'ai utilisé Application.GetOpenFilename pour que l'utiliateur choississe les fichiers mais après je n'arrive pas à extraire des données de ces fichiers.

Est-il possible de stocker les classeurs sélectionnés pour pouvoir ensuite faire des manipulations dessus?

C'est ce que j'ai éssayé de faire ci-dessous après la sélection par l'utilisateur du premier classeur, mais je pense malheureusement que filename1 ne stocke pas le classeur sélectionné par l'utilisateur...

Private Sub CommandButton3_Click()
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Workbooks("filename1").Activate
Sheets("Feuil1").Select
Rows("1:1").Select
Selection.Copy
ActiveWorbook.Activate
Sheets("Feuil1").Select
Rows("1:1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à ceux qui pourront m'orienter.

Bonjour pikachu,

Application.GetOpenFilename affiche la boîte de dialogue standard Ouvrir et affiche un nom de fichier entré par l'utilisateur sans réellement ouvrir un fichier.

c'est donc normal que Workbooks("filename1").Activate ne marche pas puisque le fichier sélectionné par l'utilisateur n'est pas ouvert.

Je ne l'ai pas en tête, mais il doit y avoir une commande pour réellement ouvrir le fichier, je regarde.

(penses à utiliser les balises [CODE] c'est plus pratique à lire ;) )

Merci pour la réponse Psycho et désolé pour la mise en forme

Oui en effet, Excel ne peut activer un fichier qui n'est pas ouvert.

En suivant tes conseils et en les complétant par google, j'ai modifié le code comme suit :

Private Sub CommandButton3_Click()
Dim f1 As Workbook
Dim filename As String
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Set f1 = Workbooks.Open(filename1)
Worksheets("Feuil1").Range("A1").EntireRow.Select
Selection.Copy
f1.Close
Activeworbook.Select

Mais dans ce cas là j'ai une erreur quand je veux retourner à mon classeur d'origine (qui contient le bouton de commande avec la macro) pour coller ce que je viens de copier..

(Erreur d'éxecution 9 , l'indice n'appartient pas à la sélection)

Du coup j'ai essayé celà :

Private Sub CommandButton3_Click()
Dim f1 As Workbook
Dim fi As Workbook
Set fi = ActiveWorkbook
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Set f1 = Workbooks.Open(filename1)
f1.Activate
Worksheets("Feuil1").Range("A1").EntireRow.Select
Selection.Copy
f1.Close
fi.Select
Sheets("Feuil1").Select

Mais là, impossible pour VBA de sélectionner fi...

Si tu pouvais retrouver ta commande ca serait génial, où si toi ou quelqu'un d'autre peut m'expliquer ce qui foire désormais, je suis preneur.

Merci d'avance

up

Salut le forum

Édite tes messages et utilise le bouton Code.

Évite d'utiliser le jaune comme couleur, sur un fond gris c'est illisible

Mytå

Merci pour les conseils Myta, je ferais attention désormais.

Re le forum

Essaye comme ceci

Dim f1 As Workbook
Dim fi As Workbook
Set fi = ActiveWorkbook
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Set f1 = Workbooks.Open(filename1)
f1.Worksheets("Feuil1").Range("A1").EntireRow.Copy
f1.Close
Sheets("Feuil1").Select

Mytå

Re le forum,

la solution de Mytå génère aussi une Erreur d'éxecution 9 chez moi, par contre en modifiant comme ceci, je n'ai plus d'erreur :

(pas besoin de fi)

Sub test()
Dim f1 As Workbook
Dim fi As Workbook
'Set fi = ActiveWorkbook
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Set f1 = Workbooks.Open(filename1)
'f1.Activate
ActiveWorkbook.Worksheets("Feuil1").Range("A1").EntireRow.Select
Selection.Copy
f1.Close
'fi.Select
Sheets("Feuil1").Select
End Sub

La commande qui ouvre le fichier est tout bêtement Workbooks.Open comme tu l'a trouvé :p

Merci Myta, en effet inutile de réactiver fi. Par contre, j'ai toujours une erreur chez moi.

J'ai finalement réussi avec vos indications avec ce code :

Private Sub CommandButton3_Click()
Dim f1 As Workbook
Dim fi As Workbook
Set fi = ActiveWorkbook
filename1 = Application.GetOpenFilename("Excel Files(*.xls), *.*", , "Selectionnez l'export RML level de la date d'arrivée du pick-up")
Set f1 = Workbooks.Open(filename1)
f1.Worksheets("Feuil1").Range("A1").EntireRow.Copy
f1.Close
fi.Worksheets("Feuil1").Paste
End Sub

Merci à vous.

@+

Edit : Exact Psycho Workbook.open. Encore merci à vous deux. Problème résolu pour moi.

Rechercher des sujets similaires à "stocker classeur ait ete"