Scott se demande comment il peut faire en sorte qu’Excel ajoute automatiquement un tiret entre chaque lettre d’une cellule donnée. Par exemple, si la cellule A1 contient « house », Scott voudrait la convertir en « h-o-u-s-e ».

Cela peut être fait avec une formule, mais cela devient rapidement difficile à manier. Par exemple, la formule suivante peut être utilisée pour mettre des tirets entre les lettres de tout ce que vous tapez dans la cellule A1:

=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-"

& RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-"

& MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1)

& "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))

Cet exemple particulier de formule ne fonctionnera que sur du texte de six caractères maximum. Ainsi, cela fonctionnerait correctement pour «maison», mais pas pour «ménage». La formule pourrait être allongée mais, encore une fois, elle deviendrait rapidement très longue.

Une meilleure approche consiste à utiliser une macro pour effectuer la conversion. Si vous souhaitez insérer les tirets directement dans la cellule, vous pouvez utiliser une macro comme celle-ci:

Sub AddDashes1()

Dim Cell As Range     Dim sTemp As String     Dim C As Integer

For Each Cell In Selection         sTemp = ""

For C = 1 To Len(Cell)

sTemp = sTemp & Mid(Cell, C, 1) & "-"

Next         Cell.Value = Left(sTemp, Len(sTemp) - 1)

Next End Sub

Cette macro est conçue pour être utilisée sur une plage de cellules sélectionnée. Sélectionnez simplement les cellules que vous souhaitez convertir, puis exécutez la macro. Les tirets sont ajoutés entre chaque lettre dans les cellules.

Si vous préférez ne pas modifier les valeurs de cellule d’origine, vous pouvez créer une fonction définie par l’utilisateur qui ferait le travail:

Function AddDashes2(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp & Mid(Src, C, 1) & "-"

Next     AddDashes2 = Left(sTemp, Len(sTemp) - 1)

End Function

Pour utiliser cette fonction, vous utiliseriez ce qui suit dans votre feuille de calcul:

=AddDashes2(A1)

Si vous voulez vous assurer que la fonction est un peu plus robuste, vous pouvez la modifier pour qu’elle gère plusieurs mots. Dans un tel cas, vous ne voudriez pas qu’il traite un espace comme une «lettre dashable». Par exemple, vous voudriez que la routine ajoute des tirets à « un deux » pour qu’il apparaisse comme « o-n-e t-w-o » au lieu de « o-n-e- -t-w-o ». La variation suivante de la fonction fera l’affaire:

Function AddDashes3(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp & Mid(Src, C, 1)

If Mid(Src, C, 1) <> " " And           Mid(Src, C + 1, 1) <> " " And           C < Len(Src) Then             sTemp = sTemp & "-"

End If     Next     AddDashes3 = sTemp End Function

_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 (9634) 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:

link: / excel-Adding_Dashes_between_Letters [Ajout de tirets entre les lettres].