Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

Biork

XLDnaute Nouveau
Bonjour,

Nouveau sur le forum, je viens solliciter votre aide pour un problème - je pense - de compatibilité entre du VBA 2010 et 2013.

J'ai créé un fichier avec macros sous Excel 2010 pour des utilisateurs travaillant avec Excel 2007. Cela fonctionne très bien.
Depuis peu, un nouvel utilisateur travaille sous Excel 2013.
Or un problème apparait durant l'exécution d'une macro. Comme c'est la première fois qu'un utilisateur rapporte un tel problème, je suspecte un problème de compatibilité avec la nouvelle version d'Excel.

Voici le code qui génère une erreur 1004:
(Comme j'obtiens tout de même un résultat partiel, je suspecte que l'erreur survienne après la partie en bleu.)

Sub New_Month()

On Error GoTo Err_Block

Dim NewBook As String
Dim VarAnswer As Long

sht1Menu.Select
VarAnswer = MsgBox("ARE YOU SURE THAT YOU WANT TO GENERATE THE NEXT MONTH ?", vbOKCancel, "WARNING")
If VarAnswer = 2 Then Exit Sub
Application.ScreenUpdating = False
Application.EnableCancelKey = xlDisabled

ProtectAll (False)

'copy/paste final balance'
sht4Payroll.Range("as10:as36").Copy
sht4Payroll.Range("aw10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'save present/old month workbook
ProtectAll (True)
ActiveWorkbook.Save

'start new/next month workbook
'create new month file name
sht1Menu.Select
NewBook = Range("n11").Value
ProtectAll (False)

ChDir ThisWorkbook.Path
'ActiveWorkbook.SaveAs (NewBook)
If Application.Dialogs(xlDialogSaveAs).Show(NewBook) = False Then
GoTo Err_Block
End If
'Application.Dialogs(xlDialogSaveAs).Show (NewBook)
'("NewBook.xls")

'changing date and year for next month
Application.Calculation = xlCalculationManual
sht1Menu.Range("c17") = sht91SetUp.Range("b5")
sht1Menu.Range("c15") = sht91SetUp.Range("b11")

'sheet menu: erase required cells
sht1Menu.Range("j15, i17:j17, c19, c21").ClearContents

'sheets Crew list: copy/paste and erase obsolete datas
sht2CrewList.Range("e37:m63").ClearContents
sht2CrewList.Range("t37:w63").ClearContents

'sheet allotment: erase obsolete datas
sht3Allotments.Range("f15:g41, f65:g91").ClearContents

'sheets Crew payroll: copy/paste and erase obsolete datas
sht4Payroll.Range("ar10:ar36") = sht4Payroll.Range("aw10:aw36").Value
sht4Payroll.Range("r10:r36, v10:v36, x10:z36, ah10:aj36, am10:ao36").ClearContents
sht4Payroll.Range("r42:r68, v42:v68, x42:z68, ah42:aj68, am42:ao68, ar42:ar68").ClearContents
sht4Payroll.Range("aw10:aw36") = 0

Exit_Block:
'resetting workbook parameters
sht1Menu.Range("c19").Select
Application.ScreenUpdating = True
Application.EnableCancelKey = xlInterrupt
Application.Calculation = xlAutomatic
ProtectAll (True)
ChDir ThisWorkbook.Path
ActiveWorkbook.Save
Exit Sub

Err_Block:
MsgBox "Error during macro execution. Please contact the office. Error #" & Err.Number & vbCr & Err.Description
Resume Exit_Block
'
End Sub


Merci d'avance pour votre aide. :)
 
Dernière édition:

Biork

XLDnaute Nouveau
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

Bonjour Roland,

Merci de t'être penché sur mon problème. :)

Mon code fonctionne très bien sur Excel 2010 et antérieur.
L'ennui est que je ne possède pas Office 2013 pour tester.
Ce code s'applique à un document professionnel pour lequel j'opère en tant que "helpdesk".
C'est donc l'utilisateur, bien loin, qui me rapporte ce problème par email.

Malheureusement, le fichier est trop volumineux pour que je puisse le joindre.
Une idée sur le code même ?
 

Biork

XLDnaute Nouveau
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

Du nouveau:

J'ai réussi à tester le fichier sur Excel 2013. A l'exécution de la macro, le même problème survient. Jusque là, tout est normal.
Mais là où ça devient étrange: lorsque je teste le code au pas à pas avec F8, la macro s'exécute normalement, sans aucun bug/problème. :confused:
Alors là, je sèche complètement. Une aide serait la bienvenue, svp.
 

Staple1600

XLDnaute Barbatruc
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

Re


Herdet
Pas besoin du fichier (surtout pas de cette taille)
Le code VBA suffira (dans un zip)
Mais avant cela, il eut été sympathique que Biork nous signale que sa question a été posée sur d'autres forums, non ?
(voir premier lien dans mon premier message)
 

Herdet

Nous a quitté
Repose en paix
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

JM, ce n'était qu'une info pour Biork.
Comment tester un code VBA sans fichier ?
Qu'elle est la nature de l'erreur ? Copie d'écran VBA ?)

Je suis décidément toujours allergique à la bataille navale :)() dans le code VBA ("as10:as36", "aw10",.... :confused: )
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013

Re

Un fichier exemple ne devrait jamais faire plus de 250 ko (à mon sens)

Et comme je disais
Le code VBA suffira (dans un zip)
Pour être plus précis: export du projet VBA dans des *.frm *.cls *. bas et donc zip de ces fichiers.


Et à vue de nez, je verrai bien un souci (sous Excel 2013) avec
Application.Dialogs(xlDialogSaveAs).
 

Biork

XLDnaute Nouveau
Re : Code VBA sous Excel 2010 ne fonctionnant pas avec Excel 2013 - résolu

Bonjour à tous et merci pour vos interventions.
Désolé pour le crosspostage (j'ai appris un nouveau mot, merci), je ne savais pas que c'était mal vu. Je cherchais simplement à optimiser mes chances de solution.

J'ai finalement pu mettre la main sur un Excel 2013 au travail et j'ai trouvé la solution.
Je vous en livre ici le détail pour information:

- la macro exécutée depuis le document Excel générait une erreur 1004
- la macro testée sous VBA (mod debug / F8) ne génère aucune erreur !!! (véridique)
- finalement, en fouillant le code pas à pas (supprimant chaque ligne de code l'une après l'autre pour voir laquelle empêchait la macro de s'exécuter), j'ai fini par mettre le doigt sur la ligne problématique (en rouge dans mon message initial). Une simple commande de sélection.

Au final (après plusieurs heures), j'ai supprimé cette ligne de sélection qui n'avait qu'une valeur "visuelle" et tout fonctionne parfaitement.
Je ne comprends pas la raison de cette erreur 1004, si quelqu'un sait m'expliquer, je suis preneur, par curiosité.

Désolé du dérangement et merci à tous pour votre aide ! :)
 

Statistiques des forums

Discussions
312 310
Messages
2 087 130
Membres
103 480
dernier inscrit
etaniere