Aide macro 2003 sur Excel 2010
Bonjour,
J'ai réalisé une macro qui fonctionne très bien sous excel 2003, cependant l'utilisateur est sous excel 2010 .
Voici ma macro :
Sub centredecout()
Dim WBSource As Workbook, WBDest As Workbook
Dim file_exist As String
Dim path As String, file As String, check_cell As String, new_file As String
Dim j As Long, i As Long, k As Long, last_row As Long, empty_last_row As Long
file = ActiveWorkbook.Name 'nom du fichier en cours : testmacro ici
last_row = Worksheets(1).Range("A65536").End(xlUp).Row 'dernière ligne du fichier en cours
Set WBSource = Workbooks(file) 'workbook source pour le c/c de ligne
path = "C:\Documents and Settings\lcristante\Desktop\test\" 'chemin du dossier global
Set WBSource = Workbooks(file)
Application.ScreenUpdating = False
For j = 5 To last_row 'balayage des centre de coût
check_cell = WBSource.Sheets("Feuil1").Range("AM" & j).Value 'selection de la cellule colonne AM et ligne j
file_exist = Dir(path & check_cell & ".xls")
Application.DisplayAlerts = False
If file_exist = "" Then 'si le fichier n'existe pas, on en créé un nouveau
new_file = path & check_cell
Dim XLBook As Workbook
Dim XLSheet As Worksheet
Set XLBook = Workbooks.Add
XLBook.SaveAs new_file
SetAttr new_file & ".xls", vbNormal
Set WBDest = Workbooks.Open(new_file)
'on met en place le fichier de destination
SetAttr new_file & ".xls", vbNormal
WBSource.Worksheets(1).Rows(3).Copy _
Destination:=WBDest.Worksheets(1).Cells(1, 1) 'c/c de l'entête du tableau
empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
WBSource.Worksheets(1).Rows(4).Copy _
Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1)
empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
WBSource.Worksheets(1).Rows(j).Copy _
Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1) 'c/c de la ligne
WBDest.Save
WBDest.Close 'on le ferme
Else
file = path & check_cell & ".xls"
SetAttr file, vbNormal
Set WBDest = Workbooks.Open(file) 'on met en place le fichier de destination
empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
WBSource.Worksheets(1).Rows(j).Copy _
Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1) 'c/c
WBDest.Save
WBDest.Close 'on le ferme
End If
Application.DisplayAlerts = True
Next j
Application.ScreenUpdating = True
End Sub
Je ne sais pas du tout ce qu'il faut changer pour que celà fonctionne sous excel 2010.
Quelqu'un a t'il une idée ?
D'avance merci
talk
Salut Talk,
Comme tu ne nous fournis pas de fichier, c'est difficile de tester
Mais as-tu essayé ce code sur Excel 2010 ? Qu'est-ce qui ne passe pas ? Selon moi rien, puisque les nouvelles versions devraient prendre en charge (pratiquement toutes) les possibilités des versions précédentes.
Si jamais ça bloque, donne quelques détails, par exemple où est-ce que ça bloque.
Cordialement.
Bonjour,
désolé de cette réponse tardive !
J'ai résolu le problème tout seul finalement.
Le problème était que je recherchais des fichiers en ".xls" sous excel 2003 alors que le 2010 crée des fichier ".xlsx" .
J'ai juste à rajouter le x a la fin de ".xls" et le tour était joué !