erreur 13 incompatibilité de type

zohaxel

XLDnaute Nouveau
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
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : erreur 13 incompatibilité de type

Bonjour,

Hi, JC ;);)

Dans la déclaration des variables, tu mets :

Code:
....
Dim wk_source As Workbooks
    Dim wk_target As Workbooks
    Dim ws_source As Worksheets
    Dim ws_target As Worksheets
.....

Enlève tous les "s" en fin, ce sera peut-être mieux...

Je n'ai pas lu le reste, :(

Code:
Dim wk_source As Workbook
    Dim wk_target As Workbook
    Dim ws_source As Worksheet
    Dim ws_target As Worksheet

Bon courage
 

zohaxel

XLDnaute Nouveau
Re : erreur 13 incompatibilité de type

Bonjour à tous,

en fait au départ, je souhaites scindé plusieurs colonnes d'une feuille sur plusieurs feuilles dans autre classeur, ce qui permet après d'importer plus vite les données sur un SGBDR.

merci à tous ceux qui participent à la discussion,
pour répondre mon nom_onglet est bien défini As String (enfin je crois), je pense que ce sont mes déclarations qui sont "mal faites" et que le code cherche la mauvaise feuille.

Pour les "s", je regarde demain et vous tiens informer.

C'est pourtant censé être un truc simple, mais c'est une prise de tête pour un débutant.

Merci xldwl
A+
 

Discussions similaires

Réponses
14
Affichages
862

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 195
dernier inscrit
Cheminotbelgiantrain