Article original publié le vendredi 9 septembre 2011

Proposé par notre expert en compatibilité Curtis Sawin

L'un des défis attenant à la migration vers Office 2010 est l'évaluation de l'impact des modifications du modèle d'objet dans les applications Office. Les développeurs et les informaticiens craignent que les macros bâties à l'aide d'une version antérieure d'Excel (par exemple) ne fonctionnent pas dans Excel 2010, car le modèle d'objet aurait trop changé. Les macros incompatibles semblent inévitables lorsque vous passez en revue la liste complète des différences dans les modèles d'objet entre la dernière version des applications Office 2010 et leurs équivalents Office 2007, 2003, XP et 2000 dans MSDN (reportez-vous aux liens à la fin de cet article). Toutefois, la plupart des modifications n'ont pas d'impact et n'auront aucun effet sur vos macros. Que signifie « la plupart » ici ? Un résumé est fourni ci-dessous :

  • Il existe plus de 22 000 éléments (propriétés, méthodes et constantes) dans les modèles d'objet combinés d'Excel 2010, Word 2010, PowerPoint 2010, Outlook 2010 et Access 2010.
  • 2 134 modifications ont été effectuées dans les modèles d'objet.
  • 49 modifications ont un impact potentiel.

49 modifications avec un impact potentiel, sur 5 applications couvrant 4 versions antérieures. C'est tout. Voici un graphique qui résume nos constatations :

Cet article décrit ce que nous appelons des modifications sans impact et des modifications ayant un impact potentiel. BONUS : à titre de référence ultérieure, nous proposons un tableau qui répertorie toutes les modifications ayant un impact potentiel. Ce tableau est joint en tant que fichier .pdf à la fin de ce billet.

Modifications sans impact et avec un impact potentiel

La documentation MSDN fournit toutes les modifications dans le modèle d'objet pour chaque application Office 2010. Les modifications sont organisées de sorte que chaque version d'Office antérieure répertorie toutes les méthodes et propriétés qui ont changé, été supprimées ou ont été déconseillées.

Par exemple, pour Excel 2010, il existe environ 900 éléments dans le modèle d'objet qui sont différents par rapport aux versions antérieures. Au premier abord, ce nombre paraît imposant. L'article MSDN Excel 2010 Object Model Changes Since Earlier Versions répertorie tous les éléments qui ont été modifiés. Une fois imprimé, cet article comporte environ 90 pages.

Éléments déconseillés – sans impact

La majorité de ces modifications correspondent à des éléments déconseillés (également répertoriés comme masqués). Qu'est-ce qu'un « élément déconseillé » et comment affecte-t-il vos macros ? Si un élément est répertorié comme déconseillé, cela signifie que vous devez vous attendre à ce qu'il ne soit plus disponible dans les versions futures d'Office et que vous devez envisager de mettre à jour le code dans le futur. Toutefois, un élément déconseillé continue à fonctionner. Ainsi, si vous disposez d'un code macro qui a été élaboré pour une version antérieure d'Office et qu'il contient des méthodes, des propriétés ou des constantes déconseillées, aucune action n'est requise pour faire fonctionner ces éléments dans Office 2010. Parmi les presque 900 éléments modifiés (882 pour être exact), 794 sont des éléments déconseillés. Cela signifie qu'environ 800 des 900 modifications dans le modèle d'objet Excel n'auront aucun impact si vos macros contiennent ces éléments.

Par conséquent, vous pouvez différer la prise en compte des éléments déconseillés, mais vous ne devez pas les ignorer entièrement. Vous devez réviser et mettre à jour un code contenant de tels éléments pour vous assurer que le code déconseillé d'aujourd'hui ne deviendra pas le code incompatible de demain.

Éléments supprimés – avec impact

Les éléments « supprimés » sont problématiques. Un élément qui est répertorié comme supprimé ne figure plus dans le modèle d'objet Office 2010. Si vous possédez une macro existante qui contient des éléments qui ont été supprimés dans Office 2010, cette macro ne fonctionnera pas. Pour Excel 2010, 9 éléments du modèle d'objet ont été supprimés depuis les versions antérieures. Ces éléments requièrent votre attention. Remplacez-les.

Éléments modifiés – majoritairement sans impact

Les éléments « modifiés » sont des méthodes ou des propriétés qui ont été, comme vous vous en doutez, modifiées par rapport à une version antérieure. Par exemple, une méthode modifiée peut renvoyer un type de données différent ou une propriété peut avoir changé de « lecture seule » à « lecture/écriture ». Après une courte analyse, nous avons constaté que la plupart des éléments modifiés impliquent une méthode ou une propriété qui accepte des paramètres facultatifs supplémentaires. Par exemple, dans Excel 2003, la méthode ListRows.Add fournit un paramètre facultatif, tandis que, dans Excel 2010, elle fournit deux paramètres facultatifs. L'ajout de ce paramètre facultatif n'a aucun impact sur son utilisation. Si vous utilisiez cette méthode dans Excel 2003 qui fournissait un seul paramètre, le même code fonctionne dans Excel 2010 sans modification.

Dans Excel 2010, il existe 97 éléments modifiés. Aucun de ces éléments n'a d'impact potentiel. Aucune modification dans ces éléments n'affecte le code existant qui contient les éléments « modifiés ».

Ainsi, sur 882 méthodes et propriétés qui sont différentes par rapport aux 4 versions antérieures d'Excel, seules 9 ont un impact.

Tous les éléments modifiés ne sont pas sans impact. Par exemple, dans PowerPoint, la méthode Presentation.SaveAs utilise une valeur par défaut différente pour le paramètre facultatif FileFormat. La valeur par défaut a changé de “1” (ppSaveAsPresentation) dans PowerPoint 2003 à “11” (ppSaveAsDefault) dans PowerPoint 2010. Par conséquent, si vous utilisez cette méthode et que vous ne fournissez pas explicitement de valeur pour le paramètre FileFormat, vous pouvez obtenir des résultats différents, selon que vous exécutez une macro créée dans PowerPoint 2003 ou dans PowerPoint 2010. Ainsi, selon la façon dont vous utilisez cette méthode, la modification a un impact potentiel.

OCCI peut-il détecter les modifications du modèle d'objet ?

Des outils tels qu'Office Code Compatibility Inspector (OCCI) permettent d'analyser vos macros pour détecter la présence de code ayant été modifié par rapport aux versions antérieures. OCCI fournit un rapport qui répertorie le nombre d'éléments ayant été modifiés, déconseillés et supprimés. Il indique également si vous utilisez des références externes (particulièrement important si vous migrez Office 2010 dans le cadre d'une mise à niveau du système d'exploitation) et si vous effectuez des déclarations qui ne sont pas explicitement marquées pour fonctionner dans un environnement Office 64 bits. La capture d'écran ci-dessous résume les constatations de l'outil OCCI sur un classeur Excel doté d'une macro.

Notez que l'outil OCCI utilise le terme « repensé » en lieu et place du terme « supprimé ». (Je ne saurais dire pourquoi cette différence existe.)


Comme l'outil OCCI relève toutes les modifications, vous devez trier la sortie pour déterminer les informations qui sont « interactives ». Cela signifie qu'OCCI vous indique que « des choses sont différentes ». Toutefois, quelles choses doivent être corrigées immédiatement et quelles choses doivent être corrigées à l'occasion ? OCCI ne fournit pas ce degré avancé d'informations. Le tableau ci-dessous a pour vocation de combler cette lacune. Il répertorie toutes les modifications ayant un impact potentiel, c'est-à-dire les choses qui devraient être évaluées immédiatement. En fonction de la manière dont ces éléments sont utilisés, le code les contenant peut ne pas avoir besoin d'être modifié. Considérez-le donc comme un « guide de démarrage rapide » pour traiter une macro quelconque. En revanche, ne vous appuyez pas trop sur un outil quelconque, ni même sur le tableau ci-dessous. Au risque de me répéter, l'exécution d'une macro pour déterminer si elle fonctionne est la seule manière fiable de déterminer son bon fonctionnement. 

Résumé

Le tableau ci-dessous répertorie toutes les modifications ayant un impact potentiel, ce qui inclut tous les éléments supprimés et tous les éléments modifiés ayant un impact potentiel. Examinez ce tableau pour identifier rapidement quel code vous utilisez éventuellement. Vous pouvez utiliser des outils tels qu'OCCI pour détecter toutes les modifications, mais ce tableau fournit des données plus interactives (et utilisables) en éliminant les modifications du modèle d'objet qui n'ont aucun impact lors de la migration de vos macros vers Office 2010.

L'un des défis liés à l'utilisation d'outils tient au fait qu'ils fournissent généralement des données qui aident à répondre à des questions techniques (telles que « Qu'est-ce qui a changé ? ») et non pas à des questions professionnelles (telles que « Quel impact est-ce que cela aura sur ma solution ? »). Les outils ont sans doute leur place pour favoriser l'automatisation et l'accélération des efforts de dépannage, mais trop s'appuyer sur ces outils peut conduire à exploiter les données qu'ils fournissent pour répondre aux mauvaises questions. Comme toujours, la meilleure méthode pour s'assurer qu'une solution fonctionne lors d'une mise à niveau vers Office 2010 consiste à réaliser des tests au niveau des utilisateurs finaux en impliquant l'utilisation réelle de la solution (dans un environnement de test, si possible).

 

(Vous pouvez télécharger le tableau ci-dessus dans un fichier .pdf en cliquant sur le lien correspondant à la fin de ce billet.)

Pour plus d'informations 

Cliquez sur les liens ci-dessous pour consulter les différences entre les divers modèles d'objet.

 

Ce billet de blog a été traduit de l’anglais. Vous pouvez consulter la version originale de cet article Understanding potentially impactful changes in the Office 2010 object model