Remplacement de caractères à la fin d’une cellule (Microsoft Excel)
Sam a un grand nombre d’adresses dans une feuille de calcul. Dans ces adresses, il doit s’assurer que toutes les directions de la boussole (NE, SE, NW et SW)
sont tous en majuscules. Il serait très utile que Sam puisse trouver comment changer l’une de ces directions minuscules (ou mixtes) qui n’apparaissent qu’à la fin d’une cellule avec leurs équivalents en majuscules. Il ne peut pas simplement rechercher un espace suivi de « ne », car cela changerait Newton en NEwton, alors il se demande comment il peut s’assurer que le remplacement se produit uniquement lorsque les lettres apparaissent à la fin d’une cellule.
Il n’existe aucun moyen d’accomplir cette tâche à l’aide des outils Rechercher et remplacer dans Excel. Cela signifie que vous devez utiliser une formule ou une macro pour effectuer la tâche. Des formules peuvent être utilisées pour s’assurer que les deux derniers caractères d’une cellule sont en majuscules:
=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))
Le problème avec une telle formule, cependant, est qu’elle n’est pas discriminatoire. Tant qu’une cellule sur laquelle elle est utilisée a une direction de boussole comme ses deux derniers caractères, il n’y a pas de problème. Mais si certaines cellules n’ont pas la direction de la boussole, vous rencontrez des problèmes très rapidement. Dans ce cas, la formule doit vérifier les derniers caractères:
=IF(LOWER(RIGHT(A1,3))=" ne", LEFT(A1,LEN(A1)-2) & "NE", IF(LOWER(RIGHT(A1,3))=" se", LEFT(A1,LEN(A1)-2) & "SE", IF(LOWER(RIGHT(A1,3))=" nw", LEFT(A1,LEN(A1)-2) & "NW", IF(LOWER(RIGHT(A1,3))=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))
Cette formule vérifie les trois derniers caractères pour voir s’il s’agit d’un espace suivi de ne, se, nw ou sw. Si tel est le cas, alors ces deux derniers caractères sont en majuscules. La formule peut être un peu raccourcie si vous l’abordez différemment:
=IF(OR(LOWER(RIGHT(A1,3))=" ne", LOWER(RIGHT(A1,3))=" se", LOWER(RIGHT(A1,3))=" nw", LOWER(RIGHT(A1,3))=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
Si vous préférez ne pas utiliser de formule, vous pouvez facilement créer une macro qui fera la vérification et la conversion pour vous:
Sub CapDirections() For Each RCell In Selection CText = UCase(Right(RCell.Value, 3)) If CText = " NE" Or CText = " SE" _ Or CText = " SW" Or CText = " NW" Then RCell.Value = Left(RCell.Value, _ Len(RCell.Value) - 3) + CText End If Next End Sub
Pour utiliser la macro, sélectionnez simplement les cellules contenant les adresses, puis exécutez-la. Il vérifie si l’un des quatre points de la boussole est à la fin de la valeur de la cellule, et si c’est le cas, il s’assure que la direction de la boussole est en majuscules.
Vous devez noter que ces solutions sont basées sur le fait qu’il n’y a que quatre directions de boussole possibles dans vos adresses. Si votre adresse a des directions de boussole plus larges (comme N ou SSE), vous voudrez certainement utiliser une solution macro-basée car la vérification devient rapidement très complexe pour une formule.
_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 (9745) 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-Replacing_Characters_at_the_End_of_a_Cell [Remplacement des caractères à la fin d’une cellule]
.