Bonjour,
je n'évoquerais pas forcément de bug mais des soucis …
Citation :
Premier bug : impossible de lancer le programme.
Impossible également d'accéder au code source, protégé par un mot de passe inconnu. J'ai donc du commencer par le cracker.
Solution du premier Bug : après ouverture d'un nouveau classeur l'appli cherchait à en renommer les 2 premières feuilles. Possible en Excel 2003 qui en ouvre 3 par défaut, mais impossible en Excel 2013 qui n'en ouvre qu'une.
|
Pas de bug …
Protéger l'accès au code en entreprise est normal afin d'éviter des modifications inopportunes par un utilisateur lambda.
Ce qui ne l'est pas, l'entreprise étant propriétaire de l'applicatif, un responsable doit détenir le mot de passe …
Quant au nombre de feuilles, c'est le paramétrage d'Excel dans ses options, B-A-BA de son utilisation !
En modifiant son paramètre, il n'y aurait pas eu besoin de modifier le code …
Citation :
Ce programme a été développé en version 2003 par, manifestement, quelqu'un qui connaît fort bien le VBA
Second bug : Nombreuses sélections dans la liste de résultats
Finalement j'isole le problème dans une sub qui permet de sélectionner un classeur et une feuille dont le nom est passé en paramètre. En effet, le programme semble passer sont temps à switcher entre les classeurs et les feuilles, cette sub est utilisée des centaines de fois.
|
A mon avis, il ne connaissait pas fort bien le VBA, juste un bidouilleur, un bon code doit éviter les sélections à tout va !
P'tite leçon à lire … Et donc la procédure SelectFeuille aurait dû être évitée, n'a pas vraiment lieu d'être …
Exemple d'accès à une feuille sans sélection grâce à une variable objet,
copie de valeurs dans la feuille active de données de la feuille Références d'un autre classeur Catalogue :
Code :
- Sub Demo()
- Dim Wbk As Workbook, Ws2 As Worksheet
-
- Set Wbk = Workbooks("Catalogue.xlsx" ) ' optionnel
- Set Ws2 = Wbk.Worksheets("Références" )
- 'ou Set Ws2 = Workbooks("Catalogue.xlsx" ).Worksheets("Références" )
- Range("C9" ).Value = Ws2.Range("M9" ).Value
- Range("D9" ).Value = Ws2.Range("N9" ).Value
-
- Set Wbk = Nothing: Set Ws2 = Nothing ' ou End
- End Sub
|
Pour moi, l'applicatif est à revoir dans sa globalité, limite de repartir d'une page blanche …
Depuis la rupture de la version 2007, VBA évoluant vers VB.Net mais perdant au passage certaines instructions,
développer exige de la rigueur …
On s'est aperçu que les mauvais programmes ou tout simplement ceux générés par l'Enregistreur de macros
pouvaient s'exécuter bien plus rapidement sous Excel 2003 que dans les versions ultérieures !
Depuis la version 2010, Excel peut être installé en 64 bits pouvant utiliser plus de RAM, utile pour les classeurs énormes,
mais perdant aussi des ActiveX (Microsoft ne les ayant pas tous convertis) et posant des soucis aux fonctions externes
comme les API Windows par exemple (là Microsoft a fini par publier une notice …), obligeant certains de réinstaller Excel en 32 bits.
Excel 2007 s'est bien fait cassé lors de sa sortie côté VBA.
Lors du passage de codes de 2003 en 2007, je rencontre vraiment peu de soucis,
soit une instruction disparue mais facilement contournable,
soit une fonctionnalité modifiée dans son comportement mais le code est aisément corrigeable.
Et depuis les versions 2010 et 2013, sur des forums du monde entier, je constate encore plus de choses négatives
mais est-ce vraiment des soucis ou des développeurs mal formés ?
Lorsque je réponds sur divers forums, souvent mon PC de tests est en version 2003
et à 95% il n'y a pas de souci sur les versions ultérieures des demandeurs …
Une position étant souvent précaire en entreprise, ne pouvant - ou ne voulant - pas se débarrasser de cette charge,
demander une formation serait judicieux !
Message édité par Marc L le 28-02-2014 à 12:33:28