Extraire caractères entre deux x

Fermé
lutz - 9 sept. 2022 à 00:08
Willzac Messages postés 266 Date d'inscription mercredi 27 septembre 2017 Statut Membre Dernière intervention 20 juin 2024 - 14 sept. 2022 à 11:58

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

A voir également:

5 réponses

via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 741
Modifié le 9 sept. 2022 à 00:44

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

merci !

0

Bonjour. Malheureusement non cela varie.

Cordialement 

0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
9 sept. 2022 à 09:33

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

merci pour votre aide

0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > lutz
9 sept. 2022 à 11:19

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
Lutz > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
9 sept. 2022 à 15:19

Merci et bon week-end !

0
yclik Messages postés 3751 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 2 février 2025 1 532
9 sept. 2022 à 10:57

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Willzac Messages postés 266 Date d'inscription mercredi 27 septembre 2017 Statut Membre Dernière intervention 20 juin 2024 14
14 sept. 2022 à 11:58

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