Terry utilise en permanence la fonction de feuille de calcul PROPER pour changer la casse du texte dans ses feuilles de calcul. Il se demande s’il existe un moyen de demander à la fonction d’ignorer certains mots, afin qu’ils ne commencent pas par une majuscule. Il n’est pas rare qu’il doive revenir en arrière après avoir utilisé PROPER et changer des mots comme «le» ou «un» en minuscules. Si PROPER pouvait ignorer la modification automatique de ces mots, ce serait d’une grande aide.

Une façon d’aborder cela consiste à utiliser la fonction de feuille de calcul SUBSTITUTE en conjonction avec la fonction PROPER. Par exemple, si vous souhaitez rechercher des instances du mot « The » avec « the », vous pouvez utiliser ce qui suit:

=SUBSTITUTE(PROPER(A1)," The "," the ")

Notez l’inclusion de l’espace avant et après ce que vous recherchez et ce que vous remplacez. Cela garantit que seuls les mots complets sont modifiés. Il s’assure également qu’aucune modification n’est apportée au début de la valeur de la cellule ou à la fin.

Si vous souhaitez rechercher d’autres mots à remplacer, vous pouvez simplement augmenter le nombre d’instances de SUBSTITUTE dans la formule:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")

Cela peut évidemment devenir un peu gênant si vous avez beaucoup de mots que vous souhaitez exclure de la modification. Dans ce cas, vous devrez recourir à une macro. La macro suivante, écrite en tant que fonction définie par l’utilisateur, peut être utilisée pour convertir tous les mots d’une cellule en majuscules initiales (tout comme PROPER), mais assurez-vous que certains mots définis sont en minuscules.

Function Title(ByVal ref As Range) As String     Dim vaArray As Variant     Dim c As String     Dim i As Integer     Dim J As Integer     Dim vaLCase As Variant     Dim str As String

' Array contains terms that should be lower case     vaLCase = Array("a", "an", "and", "in", "is", _       "of", "or", "the", "to", "with")



c = StrConv(ref, 3)

'split the words into an array     vaArray = Split(c, " ")

For i = (LBound(vaArray)+1) To UBound(vaArray)

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

' compare each word in the cell against the             ' list of words to remain lowercase. If the             ' Upper versions match then replace the             ' cell word with the lowercase version.

If UCase(vaArray(i)) = UCase(vaLCase(J)) Then                 vaArray(i) = vaLCase(J)

End If         Next J     Next i

' rebuild the sentence     str = ""

For i = LBound(vaArray) To UBound(vaArray)

str = str & " " & vaArray(i)

Next i

Title = Trim(str)

End Function

Pour utiliser la macro, tout ce que vous avez à faire est d’utiliser ce qui suit dans votre feuille de calcul:

=Title(A1)

Vous pouvez également trouver une approche supplémentaire pour réaliser la conversion souhaitée sur ce site:

http://dmcritchie.mvps.org/excel/proper.htm

_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 (10560) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

lien: / excel-Making_PROPER_Skip_Certain_Words [Making PROPER Ignorer certains mots].