Extraire caractères entre deux x

lutz -  
Willzac Messages postés 281 Statut Membre -

Bonjour,

Colonne A avec des valeurs tels que par exemple : 12x659.77x254.28-0-K

Je souhaite avoir dans le colonne B 659.77

Je souhaite avoir dans le colonne C 254.28

Je souhaite avoir dans le colonne D 12

Toutes les valeurs dans A se terminent par -0 ou -0-K que je n'ai pas besoin.

Bonne réflexion !

Cordialement !!
Windows / Edge 105.0.1343.27

5 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     

    Bonsoir

    Est ce que tous les nombres à extraire sont composés de 3 chiffres un point un chiffre  (ce qui simplifierait les formules) ?

    Sinon en B1 mettre : =STXT(A1;TROUVE("x";A1)+1;TROUVE("/";SUBSTITUE(A1;"x";"/";2))-TROUVE("x";A1)-1)

    En C1 : =STXT(A1;TROUVE("/";SUBSTITUE(A1;"x";"/";2))+1;TROUVE("-";A1)-TROUVE("/";SUBSTITUE(A1;"x";"/";2))-1)

    et en D1 : =GAUCHE(A1;TROUVE("x";A1)-1)

    Cdlmnt

    Via


    1
    1. lutz
       

      merci !

      0
  2. Lutz
     

    Bonjour. Malheureusement non cela varie.

    Cordialement 

    0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     

    Bonjour,

    en vba a adapter

    Sub test()
    Dim resultat As String
    Dim chaine As Integer
    chaine = Len(Range("A1"))
    If chaine = 20 Then
    resultat = Left(Range("A1"), Len(Range("A1")) - 4)
    Else
    resultat = Left(Range("A1"), Len(Range("A1")) - 2)
    End If
    Range("D1") = Split(resultat, "x")(0)
    Range("B1") = Split(resultat, "x")(1)
    Range("C1") = Split(resultat, "x")(2)
    End Sub
    

    Voilà


    0
    1. lutz
       

      merci pour votre aide

      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > lutz
         

        Pour automatiser

        2 façons de faire par double clic ou par une boucle:

        Faire Alt F11 sur la feuille concernée pour accéder à l'éditeur et coller ce code

        Option Explicit
        'se déclenche au double clic sur la cellule en A
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
        test (Target.Row)
        End If
        End Sub
        'Boucle sur la colonne A
        Sub For_X_to_Next_Ligne()
        Dim FL1 As Worksheet, NoCol As Integer
        Dim NoLig As Long, Var As Variant
            Set FL1 = Worksheets("Feuil1")'adapter le nom de la feuille
            NoCol = 1 'lecture de la colonne A
            For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
                Var = FL1.Cells(NoLig, NoCol)
                test (NoLig)
            Next
            Set FL1 = Nothing
        End Sub
        Sub test(ByVal ligne As Long)
        Dim resultat As String
        Dim chaine As Integer
        chaine = Len(Range("A" & ligne))
        If chaine = 20 Then
        resultat = Left(Range("A" & ligne), Len(Range("A" & ligne)) - 4)
        Else
        resultat = Left(Range("A" & ligne), Len(Range("A" & ligne)) - 2)
        End If
        Range("D" & ligne) = Split(resultat, "x")(0)
        Range("B" & ligne) = Split(resultat, "x")(1)
        Range("C" & ligne) = Split(resultat, "x")(2)
        End Sub
        

        Voilà

        @+ Le Pivert

        0
      2. Lutz > cs_Le Pivert Messages postés 8437 Statut Contributeur
         

        Merci et bon week-end !

        0
  4. yclik Messages postés 3875 Date d'inscription   Statut Membre Dernière intervention   1 611
     

    Bonjour

    une proposition

    en B

    =STXT(A2;TROUVE("x";A2)+1;-1+TROUVE("x";STXT(A2;TROUVE("x";A2)+1;NBCAR(A2))))

    en C

    =STXT(A2;TROUVE("x";A2)+1+NBCAR(B2)+1;NBCAR(A2)-TROUVE("-";A2)+2)

    en D

    =GAUCHE(A2;TROUVE("x";A2)-1)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Willzac Messages postés 281 Statut Membre 15
     

    Bonjour,

    Si vous n'avez pas besoin des formules, vous pouvez utiliser le Remplissage instantané.

    Exemple : 

    Vous remplissez la première ligne manuellement et pour remplir les autres lignes:

    CTRL+E si vous avez la version récente d'Excel.

    Bonne journée.

    0