Bonjour,
Malgré les nombreux sujets déjà abordés sur le forum je n'ai pas trouvé de solution à mon problème donc je m'adresse directement à vous !
Je réalise un programme VBA qui :
- ouvre un fichier Excel (fichier en csv contenant une seule feuille) selon une adresse renseignée en case N3 de mon fichier de calcul
- Copie la colonne C de ce fichier
- Colle cette colonne en E de mon fichier de calcul initial
J'arrive à faire le premier point, seulement après, je n'arrive pas à copier la colonne qui m'intéresse.
Le fichier que je viens d'ouvrir ne reste pas actif et mon programme se borne à copier la colonne C de mon fichier initial dans la colonne E.
Mon fichier csv n'est pas en lecture seule. J'ai fait le test avec ce fichier converti auparavant en excel et cela ne fonctionne pas non plus.
Voici mon code :
Sub Import()
Dim appxl As Excel.Application
Set appxl = CreateObject("Excel.application")
Dim sourceFileName As String
'ouvrir le fichier avec les données
With appxl
.Workbooks.Open (Range("N3").Value)
sourceFileName = appxl.ActiveWorkbook.Name
.Visible = False
End With
'convertir le fichier csv en excel
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.Copy
Windows("Fichiercalcul.xlsm").Activate
Columns("E:E").Select
ActiveSheet.Paste
appxl.Workbooks(sourceFileName).Close
Set appxl = Nothing
End Sub
J'ai essayé d'ajouter Windows(sourceFileName).Activate avant de copier la colonne C mais sans succès, on me dit que l'indice n'est pas défini.
Auriez-vous une idée ?
Je vous remercie par avance