J'ai un bouton sur une feuille de calcul qui, lorsqu'il est enfoncé, devrait permettre à l'utilisateur d'ouvrir un fichier, puis de copier les colonnes A à G de la feuille de calcul "Données", puis de coller les données de ces colonnes sur la feuille en cours.
J'ai une erreur logique dans le code; il s'exécute, mais il colle la sélection au mauvais endroit.
J'ai du mal à référencer les deux classeurs.
Voici mon code:
Sub Button1_Click()
Dim Excel As Excel.Application
Dim wb As Excel.Workbook
Dim sht As Excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set Excel = CreateObject("Excel.Application")
Set wb = Excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Paste
wb.Close
End Sub
Utilisez la méthode PasteSpecial:
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
MAIS votre gros problème est que vous changez votre ActiveSheet en "Data" et ne le changez pas en arrière. Vous n'avez pas besoin de faire l'activation et la sélection, selon mon code (cela suppose que votre bouton se trouve sur la feuille sur laquelle vous souhaitez copier).
"Donc, d'après cette discussion, je pense que cela devrait être le code alors.
Sub Button1_Click()
Dim Excel As Excel.Application
Dim wb As Excel.Workbook
Dim sht As Excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set Excel = CreateObject("Excel.Application")
Set wb = Excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
wb.Close
End Sub
"Faites-moi savoir si cela est correct ou si une étape a été manquée. THX.