Formule pour épurer

Résolu
Bonjour a tous,

je récupère la musique des chevaux et je voudrais épurer en enlevant les a;();[],ne pas prendre en compte se qu'il y a des les parenthèse voici un exemple :

en Colonne E:E j'ai ceci : Da1a(19)1a et en Colonne I:I je veux épurer comme ceci: 11 ou
en Colonne E:E j'ai ceci : 9a1a(19)3a et en Colonne I:I je veux épurer comme ceci: 913

j’espère donner le bon exemple.

merci à vous tous

Configuration: Windows / Opera 67.0.3575.137

5 réponses

  1. Bonjour à tous,

    Tes items ont toujours la même syntaxe (avec des "a", avec des "(19)") ?. Il n'y a que les chiffres qui changent ?

    Crdlmt
    0
    1. Bonjour,

      Avec une fonction personnalisée, dans un module standard, qui élimine ce qu'il y a entre parenthèses ou entre crochets et ne conserve que les nombres dans ce qui reste. :
      Function EpureDada(cel As Range) As Long
      Dim s As String, r As String, i As Long, off1 As Boolean, off2 As Boolean
        s = cel.Text
        For i = 1 To Len(s)
          If Not off2 And Mid(s, i, 1) = "(" Then off1 = True
          If Not off2 And Mid(s, i, 1) = ")" Then off1 = False
          If Not off1 And Mid(s, i, 1) = "[" Then off2 = True
          If Not off1 And Mid(s, i, 1) = "]" Then off2 = False
          If Not (off1 Or off2) Then
            If Asc(Mid(s, i, 1)) > 47 And Asc(Mid(s, i, 1)) < 58 Then
              r = r & Mid(s, i, 1)
            End If
          End If
        Next
        EpureDada = Val(r)
      End Function 


      En I2 :
      =epuredada(E2)
      à tirer vers le bas

      0
      1. bonjour patrice,

        merci pour cette VBA elle fonctionne trés bien et dans mes attente.

        bonne journée.

        bien à vous
        0
        1. Contributeur
          Bonjour

          il y avait aussi

          Option Explicit
          '-----------------------------------------------------------
          Function epurer(texto As Range)
          Dim Separe, Cptr As Byte, Test

          Separe = Split(texto, "a")
          For Cptr = 0 To UBound(Separe)
          Test = Right(Separe(Cptr), 1)
          If IsNumeric(Test) Then: epurer = epurer & Test
          Next
          End Function

          0
          1. Bonjour michel,

            je te remercie elle et un peu plus complète,je te remercie pour cette vba.

            bonne journée.

            bien à vous
            0