Problèmes rencontrés avec les fonctions de l'utilitaire d'analyse
L'utilitaire d'analyse est une macro complémentaire livrée par microsoft avec excel antérieures à 2007. Cet outil comprend de nombreuses fonctions permettant par exemple de faire des calculs statistiques ou de travailler sur des dates.
Les fonctions intégrées d'excel comme somme(), log(), date(), maintenant()... s'écrivent en français dans une version francophone d'excel mais sont en réalité codées en langage machine et donc complètement indépendantes de la langue. Si vous les transmettez à un utilisateur avec une version non francophone, elles seront automatiquement traduites du langage machine vers sa langue et au lieu de voir =maintenant() un anglophone verra = now().
En revanche les fonctions de l'utilitaire d'analyse sont liées à la langue utilisée dans la version d'excel, comme lorsqu'on utilise formula.local en VBA.
Cette particularité et le fait que l'utilitaire d'analyse n'est pas forcément installé en même temps qu'excel (c'est au choix de l'utilisateur) a toujours été à l'origine de problèmes. Suivant les versions utilisées par celui qui rédige le classeur excel et celui qui l'utilise on trouve différents types de problèmes :
Je développe avec excel 97-2003 en version francophone et je transmets mon classeur à quelqu'un qui a une version 97-2003 francophone.
Vous écrivez dans votre classeur la formule =fin.mois(A1).
Vous envoyez votre classeur à un collègue qui vous dit que le classeur ne fonctionne pas chez lui. C'est très probablement qu'il n'a pas installé l'utilitaire d'analyse.
Pour résoudre le problème deux solutions au choix :
- Vous modifiez votre classeur pour utiliser uniquement des formules qui ne font pas appel à l'utilitaire d'analyse (voir plus loin comment).
- Il installe l'utilitaire d'analyse :
Installer l'utilitaire d'analyse (versions excel 97-2003) 1. Dans le menu Outils, cliquez sur Macros complémentaires. 2. Dans la zone Macros complémentaires disponibles, activez la case à cocher en regard de Utilitaire d'analyse, puis cliquez sur OK. Si l'Utilitaire d'analyse n'est pas répertorié, cliquez sur Parcourir pour le trouver. 3. Si un message indiquant que l'utilitaire d'analyse n'est pas installé sur votre ordinateur s'affiche, cliquez sur Oui pour l'installer. 4. Dans la barre de menus, cliquez sur Outils. Lorsque vous chargez l'utilitaire d'analyse, la commande Utilitaire d'analyse est ajoutée au menu Outils. Pour inclure les fonctions Visual Basic pour Application (VBA) à l'utilitaire d'analyse, vous pouvez charger, de la même façon, la macro complémentaire Utilitaire d'analyse - VBA. Dans la zone Macros complémentaires disponibles, activez la case à cocher en regard de Utilitaire d'analyse - VBA.
Je développe avec excel 97-2003 en version francophone et je transmets mon classeur à quelqu'un qui a une version 97-2003 d'une autre langue.
Même si cette personne a l'utilitaire d'analyse installé, la fonction ne sera pas traduite dans sa langue à l'ouverture du classeur, alors que les fonctions intégrées d'excel le seront sans problème.
De même si on vous transmet un classeur contenant =EO.MONTH(A1), à l'ouverture vous verrez toujours cette formule en anglais et n'étant pas comprise par excel, elle vous renverra une erreur.
Que faire ?
- Faire un rechercher-remplacer avec recherche= FIN.MOIS( remplacer par EO.MONTH( (ou l'inverse quivant le cas !)
- Développer un classeur sans faire appel à ces fonctions de l'utilitaire d'analyse (voir plus loin comment).
J'ai installé excel 2007 et j'ai des erreurs dans mes propres classeurs développés avec une version antérieure.
Une grande partie (39) des fonctions de l'utilitaire d'analyse (mais pas toutes, ce serait trop simple...) ont maintenant été intégrées à excel 2007.
L'avantage c'est que maintenant si l'on transmet un classeur à un utilisateur ayant une version non française d'excel, la fonction sera automatiquement traduite dans la langue de l'utilisateur et interprétée, ce qui n'était pas le cas avec les versions antérieures. Mais cela a des conséquences immédiates fort désagréables. Il faut en effet forcer excel à reconsidérer toutes les formules contenant les anciennes fonctions de l'utilitaire d'analyse pour qu'en quelque sorte il se les réapproprie. Cela est assez simple à faire mais vite lassant il suffit de cliquer dans la cellule et de la revalider.
Si tu as beaucoup de formules de ce genre dans ton classeur, tu peux utiliser cette macro qui fait l'équivalent de cette revalidation manuelle pour toutes les cellules contenant une formule :
Sub Formule_2003_2007() Dim Sh As Worksheet, Rg As Range, C As Range Dim MCalcul As String MCalcul = Application.Calculation Application.Calculation = xlCalculationManual On Error Resume Next For Each Sh In Worksheets With Sh Set Rg = .UsedRange.SpecialCells(xlCellTypeFormulas) For Each C In Rg If C.HasArray Then C.FormulaArray = C.FormulaArray Else C.Formula = C.Formula End If Next End With Next Application.Calculation = MCalcul End Sub
Je travaille avec excel 2007 mais j'ai des collègues qui ont une version antérieure
Si on enregistre dans excel 2007 un classeur contenant des formules auparavant contenues dans l'utilitaire d'analyse en sauvegardant en format compatible 97-2003, à la réouverture dans les versions antérieures, les formules en question s'afficheront en anglais. On se trouve donc exactement devant le problème inverse de celui évoqué au paragraphe précédent. Mais revalider ces formules ne résoudra pas cette fois le problème !
Que faire ?
- Faire un classeur pour les versions antérieures à 2007 et un pour 2007 (et suivantes espérons le !)
- Se passer des fonctions de l'utilitaire d'analyse.
DONC AUTANT QUE POSSIBLE MIEUX VAUT EVITER L'UTILITAIRE D'ANALYSE !
Oui mais comment ?
Il est en effet en règle général tout à fait possible de trouver une fonction (plus longue certes !) qui ne fasse appel qu'aux fonctions "de base " d'excel. Ce lien vers le site Daily dose of Excel est précieux, même s'il est en anglais : il fournit une liste de solutions de contournement pour les différentes fonctions de l'utilitaire d'analyse.
On peut par exemple remplacer la formule
= MOIS.DECALER(A1;3) par
=DATE(ANNEE(A1);MOIS(A1)+3;JOUR(A1))
Certes c'est plus long mais ça fonctionne sur toutes les versions d'excel et dans toutes les langues !
On peut aussi écrire ses propres fonctions VBA équivalentes à celles de l'utilitaire d'analyse et les diffuser avec le classeur. Par exemple on écrit en VBA une fonction fin.de.mois() qui reproduit la fonction de l'utilitaire d'analyse FIN.MOIS()
Dans les classeurs problématiques, faire un rechercher (FIN.MOIS) remplacer par (FIN.DE.MOIS)... Pénible mais parfois il n'y a pas d'autre choix...
Ron de bruin, a mis heureusement sur son site l'add-in "analysis tool pack translator" fait par Eric Desart qui est d'une grande aide.
http://www.rondebruin.nl/atptranslator.htm
Reste un vrai problème pour ceux qui utilisent 2007 : comment savoir quelles sont les fonctions qui étaient auparavant inclues dans l'utilitaire d'analyse ? La page de Daily dose of Excel ci-dessus vous permet également de vérifier ce point.. Faute de mieux.
Le classeur qu'on m'a transmis et qui contient des fonctions de l'utilitaire d'analyse est verrouillé, comment modifier les formules ?
La première chose à faire c'est de demander au concepteur de le déprotéger. Mais on peut aussi en cas de besoin faire une copie de la feuille contenant les formules protégées dans une autre feuille (ce qui au passage montre bien le très fort niveau de protection proposé par excel !).
Sub Copie()
With Workbooks("NomDuFichierSource.xls").Worksheets("NomDeLaFeuille")
.Cells.Copy ThisWorkbook.Worksheets("Feuil1").Range("A1")
End With
End SubAuteurs : Flo Cabon, Denis Michon
Mots clefs associés à cette page : dénombrer, analyse, utilitaire
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
