Lecture d'un caractère à une position variable

Bonjour,

Je cherche à lire un caractère d'une chaîne en fonction de la position du tiret.

J'ai tenté le code ci-dessous, mais je n'arrive pas à lire ce caractère.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, xx

    On Error Resume Next
    i = Application.WorksheetFunction.Find("-", Target)

    xx = Target.Characters(Start:=i - 1, Length:=1)
    MsgBox (xx)

End Sub

Si j'écris par exemple Jean-Paul, je voudrais trouver ''n'', soit la lettre avant le tiret.

Savez-vous m'aider ?

Cordialement.

9demo.xlsm (13.64 Ko)

Bonjour,

je dirais :

xx=mid(target,i-1,1)

On utilise .Characters que si on veut faire une opération style ou couleur sur une partie de la chaine affichée.

eric

Bonjour,

Un exemple avec la fonction InStr.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, xx As String
i = VBA.InStr(Target.Value, "-")
    If i > 0 Then
        xx = Mid(Target.Value, 1, i - 1)
    Else
        xx = Target.Value
    End If
    MsgBox xx
End Sub

Salut eriiic,

Merci beaucoup pour ta réponse.

Parfois on va chercher la solution beaucoup trop loin !

Merci de m'avoir ''recadré''

EDIT : Merci à toi aussi Jean-Eric, ta solution est aussi très intéressante (mais vue par après)

Rechercher des sujets similaires à "lecture caractere position variable"