Hamish est confronté à une tâche ardue: il doit changer les polices par défaut utilisées dans un grand nombre de classeurs Excel. Il possède plus de 100 classeurs et les polices utilisées dans ces classeurs doivent être remplacées par une nouvelle police spécifiée par mandat d’entreprise. (Vous savez comment les mandats d’entreprise peuvent être!)

La manière manuelle d’aborder cette tâche consiste à charger chaque classeur, à parcourir chaque feuille de calcul, à sélectionner les cellules et à modifier les polices de ces cellules. Pour rendre la tâche d’Hamish encore plus complexe, il doit changer plusieurs polices dans chaque classeur. En d’autres termes, étant donné les polices A, B, C et D, Hamish doit changer la police A en C et la police B en D.

La meilleure façon d’aborder ce problème consiste à utiliser une macro.

Il y a tellement de chargement, de recherche et de modification qui sont nécessaires qu’il est logique de reléguer le travail à une macro. La macro suivante devrait faire le travail:

Sub ChangeFontNames()

Dim vNamesFind     Dim vNamesReplace     Dim sFileName As String     Dim Wkb As Workbook     Dim Wks As Worksheet     Dim rCell As Range     Dim x As Integer     Dim iFonts As Integer     Dim sPath As String

'Change these lines as appropriate     'These are the fontnames to find     vNamesFind = Array("Arial", "Allegro BT")

'These are the fontnames to replace     vNamesReplace = Array("Wingdings", "Times New Roman")

'This is the folder to look for xls files     sPath = "C:\foldername\"



Application.ScreenUpdating = False     iFonts = UBound(vNamesFind)

If iFonts <> UBound(vNamesReplace) Then         MsgBox "Find and Replace Arrays must be the same size"

Exit Sub     End If     sFileName = Dir(sPath & "*.xls")

Do While sFileName <> ""

Set Wkb = Workbooks.Open(sPath & sFileName)

For Each Wks In Wkb.Worksheets             For Each rCell In Wks.UsedRange                 For x = 0 To iFonts                     With rCell.Font                         If .Name = vNamesFind(x) Then _                             .Name = vNamesReplace(x)

End With                 Next             Next         Next         Wkb.Close(True)

sFileName = Dir     Loop     Application.ScreenUpdating = True     Set rCell = Nothing     Set Wks = Nothing     Set Wkb = Nothing End Sub

Pour utiliser la macro avec vos propres classeurs, vous devez effectuer plusieurs opérations. Tout d’abord, assurez-vous que tous les classeurs que vous souhaitez modifier sont stockés dans un seul dossier et que vous connaissez le nom du dossier. Ensuite, dans la macro, modifiez les variables définies vers le début de la macro. Modifiez les éléments des tableaux vNamesFind et vNamesReplace pour qu’ils correspondent aux noms des polices que vous souhaitez respectivement rechercher et remplacer. Vous devez ensuite modifier la variable sPath afin qu’elle contienne le chemin d’accès complet au dossier contenant vos classeurs.

(N’oubliez pas une barre oblique inverse sur le chemin.)

Lorsque vous exécutez la macro, il charge chaque classeur du dossier à son tour.

Ensuite, il parcourt chaque feuille de calcul de chaque classeur et examine chaque cellule. Si la cellule contient l’une des polices à rechercher, elle est remplacée par la police de remplacement correspondante. Lorsque la macro est terminée avec le classeur, elle est enregistrée et le prochain classeur est traité.

Ceux qui souhaitent éviter ce type de problème sur les nouvelles feuilles de calcul devraient explorer comment utiliser les styles dans Excel. Vous pouvez définir un nombre illimité de styles et les utiliser dans un classeur. Si vous devez ultérieurement modifier la mise en forme de cellules spécifiques, tout ce que vous avez à faire est de modifier les styles sous-jacents. (Les styles ont été traités dans d’autres numéros de ExcelTips.)

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2526) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Changing_Fonts_in_Multiple_Workbooks [Modification des polices dans plusieurs classeurs].