Remplacement dans des feuilles de calcul et des commentaires en même temps (Microsoft Excel)
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.