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
___________________________________________________________________________________
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
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
___________________________________________________________________________________
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