Bonjour,
je suis débutant en prog VBA, j'ai fais une macro permettant de transférer des colonnes d'un 1er classeur vers un second qui se crée instantanément. Plusieurs erreurs sont survenues, erreur 9 puis 13 incompatibilité de type. Le problème vient surement dans l'identification des classeurs et des feuilles mais je suis perdu.
Je n'arrive pas à trouver l'erreur dans le code, il y a surement quelques chose que je ne saisi pas encore.
le débogage indique la ligne suivante
Set ws_source = wb_source.Sheets(nom_onglet)
Voici le code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Sub Transfert()
'
' Transfert Macro
'
' Touche de raccourci du clavier: Ctrl+t
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim source As Excel.Worksheet
Set source = ActiveSheet
Dim nom_onglet As String
nom_onglet = ActiveSheet.Name
Dim nom_target As String
nom_target = nom_onglet & ".xls"
Dim nom_source As String
nom_source = nom_onglet & ".csv"
Dim wk_source As Workbooks
Dim wk_target As Workbooks
Dim ws_source As Worksheets
Dim ws_target As Worksheets
Dim cell_source_1er As Range
Dim cell_source_der As Range
Dim cell_target As Range
'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 1)
xlApp.SheetsInNewWorkbook = 1
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs Filename:=nom_target
'On rend le classeur visible
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Set xlSheet = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlSheet.Name = nom_onglet
'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3
Set wb_source = Workbooks(nom_source)
Set ws_source = wb_source.Sheets(nom_onglet)
Set cell_source_1er = ws_source.Range("A1")
Set cell_source_der = cell_source_1er.End(xlDown)
Set wb_target = Workbooks(nom_target)
Set ws_target = wb_target.Sheets(nom_onglet)
Set cell_target = ws_target.Range("A1")
ws_source.Range(cell_source_1er, cell_source_der).Copy cell_target
End Sub |
Merci d'avance
Partager