Les étudiants de Dorothy personnalisent un classeur de simulation de chéquier en remplaçant le nom par défaut par le leur. Par exemple, elle souhaite qu’ils recherchent «Jason Anderson» et remplacent le nom par «Sue Smith».

Il y a 22 occurrences de «Jason Anderson» dans les zones de texte dans huit onglets de feuille de calcul, et plusieurs autres sur les feuilles de calcul elles-mêmes.

Dorothy se demande comment elle peut rechercher et remplacer toutes les occurrences de feuille de calcul et toutes les occurrences de commentaire à la fois.

Il n’y a aucun moyen de faire cela sans utiliser une macro. La macro doit parcourir chaque cellule du classeur, chaque commentaire et chaque zone de texte pour voir si des modifications doivent être apportées. Voici un exemple de la façon dont cela peut être fait:

Sub ReplaceNames()

Dim sDefaultName As String     Dim sNewName As String     Dim sht As Worksheet     Dim cmt As Comment     Dim wks As Worksheet     Dim sCmt As String     Dim shp As Shape

sDefaultName = "Jason Anderson"

sNewName = InputBox("Enter your first and last name.", _       "Name Replacement")



' Replace cell text     For Each sht In ActiveWorkbook.Worksheets         sht.Cells.Replace what:=sDefaultName, _           Replacement:=sNewName, LookAt:=xlPart, _           SearchOrder:=xlByRows, MatchCase:=False, _           SearchFormat:=False, ReplaceFormat:=False     Next sht

' Replace comment text     For Each wks In ActiveWorkbook.Worksheets         For Each cmt In wks.Comments             sCmt = cmt.Text             If InStr(sCmt, sDefaultName) <> 0 Then                 sCmt = Application.WorksheetFunction. _                   Substitute(sCmt, sDefaultName, sNewName)

cmt.Text Text:=sCmt             End If         Next cmt     Next wks     Set wks = Nothing     Set cmt = Nothing

' Replace text box text     On Error Resume Next     For Each wks In ActiveSheet.Parent.Worksheets         For Each shp In wks.Shapes             With shp.TextFrame.Characters                 .Text = Application.WorksheetFunction.Substitute( _                   .Text, sDefaultName, sNewName)

End With         Next shp     Next wks End Sub

La macro invite l’utilisateur à entrer un nouveau nom, puis recherche les cellules, les commentaires et les zones de texte pour voir s’il existe des occurrences du nom par défaut (« Jason Anderson »). Si tel est le cas, le remplacement approprié est effectué.

Si vous ne souhaitez pas utiliser de macros pour effectuer la recherche, une restructuration du classeur serait peut-être utile. Par exemple, vous pouvez créer une «feuille de calcul de saisie de données» dans laquelle des informations communes, telles que le nom de la personne, sont saisies. Dans les autres feuilles de calcul, le nom de la feuille de calcul d’entrée de données est référencé à l’aide de formules. Ainsi, un changement dans la feuille de calcul d’entrée de données et le nom est changé dans toutes les autres feuilles de calcul.

L’utilisation de cette approche peut également fonctionner avec des commentaires. Vous pouvez sélectionner le commentaire ou la forme et, dans la barre de formule, saisir une formule de référence telle que celle-ci:

=MyName

Cela suppose que le nom de l’utilisateur, sur la feuille de calcul d’entrée de données, a été associé à la plage nommée MyName. S’il doit y avoir des informations supplémentaires dans le commentaire ou la forme, vous pouvez créer ce texte dans une cellule de la feuille de calcul d’entrée de données, puis attribuer le contenu de cette cellule au commentaire ou à la forme, comme indiqué pour la plage nommée MyName.

_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 (2614) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.