Frank doit convertir entre 4 000 et 5 000 noms par jour des majuscules aux majuscules. La fonction PROPER lui donne un résultat passable qui doit encore être révisé et édité manuellement pour faire face aux acronymes, etc. qui ne devraient pas être dissimulés. Frank pense qu’il a probablement besoin de la fonction pour inclure une recherche sur une sorte de liste d’exceptions, il se demande donc s’il existe une telle capacité de conversion de cas dans Excel.

La meilleure façon de gérer cela dépendra des données avec lesquelles vous commencez. Par exemple, disons que ce qui suit sont les valeurs de deux cellules dans vos données source:

Big John's Mining, LLC USA

Si votre exception est que vous ne voulez pas que le cas de LLC change, vous avez besoin d’une méthode qui examinera des parties de chaque cellule. Si votre exception est que vous ne voulez pas que le cas des États-Unis change, vous avez besoin d’une méthode qui évaluera le contenu de chaque cellule dans son ensemble.

Il est plus facile de prendre en charge le deuxième type de données que le premier, alors regardons cela en premier. La formule suivante repose sur une liste d’exceptions que vous avez quelque part dans votre classeur. Cette liste d’exceptions doit être configurée en tant que plage nommée, en utilisant le nom Exceptions.

Si vos données d’origine sont dans la colonne A, vous pouvez placer cette formule dans la cellule B1, puis la copier autant que nécessaire:

=IFERROR(VLOOKUP(A1,Exceptions,1,0),PROPER(A1))

Toute cellule qui correspond parfaitement à tout ce qui se trouve dans votre tableau d’exceptions finira par ressembler exactement à l’exception, et tout ce qui ne correspond pas entièrement se verra appliquer PROPER.

En ce qui concerne le premier type de données (où vous devez regarder à l’intérieur de chaque cellule pour les exceptions), il est préférable de s’appuyer sur une macro. Voici un exemple de celui que vous pourriez utiliser comme point de départ.

Function MyProper(ByVal r As Range) As String     Dim vExceptions As Variant     Dim vReplacements As Variant     Dim vWords As Variant     Dim iRaw As String     Dim J As Integer     Dim K As Integer     Dim sTemp As String

' Exceptions array     vExceptions = Array("USA", "PhD", "LLC", "and", _       "Kentucky", "D.C.")



' Replacements array     vReplacements = Array("USA", "PhD", "LLC", "and", _       "KY", "DC")



' Convert the text to Proper case and store in a string     iRaw = StrConv(r, 3)

' Split the words into an array     vWords = Split(iRaw, " ")

For J = LBound(vWords) To UBound(vWords)

For K = LBound(vExceptions) To UBound(vExceptions)

If UCase(vWords(J)) = UCase(vExceptions(K)) Then                 vWords(J) = vReplacements(K)

End If         Next K     Next J

' Rebuild the cell contents     sTemp = ""

For J = LBound(vWords) To UBound(vWords)

sTemp = sTemp & " " & vWords(J)

Next J

MyProper = Trim(sTemp)

End Function

Il s’agit d’une fonction définie par l’utilisateur, vous pouvez donc utiliser ce qui suit pour effectuer une conversion sur vos données source:

=MyProper(A1)

La vitesse de la macro dépendra de deux choses: le nombre de fois qu’elle est utilisée dans votre feuille de calcul (le nombre de mots que vous devez modifier) ​​et le nombre d’exceptions que vous recherchez dans la macro. Avec 4 000-5 000 mots et une douzaine d’exceptions en cours de vérification, la macro devrait toujours fonctionner assez vite pour être acceptable. (Ce sera certainement plus rapide que de faire votre vérification à la main!)

La fonction repose sur deux tableaux, vExceptions et vReplacements. Il explose le contenu de la cellule dans le tableau vWords à l’aide de la fonction Split. (Une fois la fonction Split exécutée, chaque élément du tableau vWords contiendra un mot, tel que défini par l’occurrence d’un espace.) Chaque élément du tableau vWords est ensuite comparé à chaque élément du tableau vExceptions. S’ils correspondent (ou, plus correctement, si la version majuscule de chacun d’eux correspond), alors l’élément correspondant du tableau vReplacements est utilisé à la place du mot d’origine. Cette approche a l’avantage supplémentaire de vous permettre de remplacer des acronymes, comme c’est le cas en remplaçant KY pour Kentucky et DC pour DC

N’oubliez pas que j’ai mentionné que cette macro n’est qu’un bon point de départ.

Vous devrez évidemment le modifier pour refléter vos listes d’exceptions et de remplacements. En outre, vous devez comprendre que s’il y a une ponctuation dans vos données d’origine, cette ponctuation est considérée comme faisant partie des « mots » éclatés par la fonction Fractionner. Par exemple, si les données d’origine ont quelque chose comme « Davis, LLC, Stanton », les virgules sont considérées comme faisant partie des mots qu’elles suivent. (Rappelez-vous que le fractionnement se fait au niveau des espaces.) Ainsi, vous vous retrouverez avec « Davis, Llc, Stanton » dans votre résultat car le « LLC » dans le tableau vExceptions ne correspondra pas au « LLC », qui est dans les vWords tableau.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (7840) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.