Récupérer les X caractères avant un caractère particulier-VB

Bonjour à tous,

Ma question concerne du VBA sur Excel 2013

Je souhaite récupérer dans une chaîne de caractère les X caractères avant un symbole particulier et à condition qu'ils soient NUMÉRIQUES mais après avoir écumé pas mal de site je ne trouve pas satisfaction dans les réponses..

Exemple :

Je veux écrire dans une cellule B1 les 3 caractères avant le symbole ° contenus dans une cellule A1.

Si la cellule A1 contient : "ezfdf°rf" ---> B1=Ø //car pas 3 caractères NUMÉRIQUES avant le °

Si la cellule A1 contient : "erf32° dfs" ----> B1=Ø //car pas 3 caractères NUMÉRIQUES avant le °

Si la cellule A1 contient : "erfze253° ze" ----> B1=253 //car 3 caractères NUMÉRIQUES avant le °

Si la cellule A1 contient : "zerzf2 46 4°eze" ---> B1=Ø //car pas 3 caractères NUMÉRIQUES à suivre avant le °

Si la cellule A1 contient : "erfze25 ze" ----> B1=Ø //car pas de ° dans la chaîne de caractère

J’espère que vous trouverez un moyen de me sortir de cette impasse ! Merci d'avance.

Yann

Bonjour,

Fournir le classeur KIVABIEN avec (juste la liste des string à récupérer) et en précisant dans quelle colonne afficher le résultat.

A+

Bonjour,

Tu trouveras ci-joint un fichier avec dans la colonne 1 les infos que j'ai et dans la colonne 2 ce que je voudrais avoir via du code VBA.

J’espère que tu y verras plus clair !

Merci d'avance

48exemple.xlsx (8.75 Ko)

Re,

A adapter...

Sub test()
Dim o, a, i%, k%, Y As Boolean
k = 2             'Nombre de chiffre à récupérer
[A2:A6].Select    'Plage à traiter
For Each o In Selection
   a = Right(Split(o, "°")(0), k)
   Y = True
   For i = 1 To k
      If Y Then Y = Mid(a, i, 1) Like "#"
   Next
   If Y Then
      o.Offset(, 1) = CInt(Right(Split(o, "°")(0), k))
   End If
Next
End Sub

A+

Merci beaucoup ! Je prends ça et je bidouille avec !

A+

Bonjour Yann, Galopin

une autre façon de faire, vite fait, sans variables, brut de décoffrage...

For x = 2 To 6
    sFlag = Cells(x, 1)
    iFlag = InStr(sFlag, "°")
    If iFlag > 0 Then
        sFlag = Left(sFlag, iFlag - 1)
        sFlag = Right(sFlag, 2)
        iFlag = InStr(sFlag, Chr(32))
        If iFlag = 0 Then Cells(x, 2) = IIf(IsNumeric(sFlag), sFlag, "")
    End If
Next

Tous les chemins mènent à Rome!

A+

Bonjour,

Unepremièretentative.

Cdlt.

Public Function DEMO(Cell As Range)
Dim pos As Long
    DEMO = ""
    If IsEmpty(Cell) Then Exit Function
    pos = InStr(1, Cell.Value, "°")
    If pos > 0 Then
        DEMO = Mid(Cell.Value, pos - 2, 2)
    End If
End Function
Rechercher des sujets similaires à "recuperer caracteres caractere particulier"