Extraire caractères entre deux x
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
- Excel extraire entre deux caractères
- Nombre de jours entre deux dates excel - Guide
- Extraire une video youtube - Guide
- Liste déroulante excel - Guide
- Extraire le son d'une vidéo - Guide
- Word et excel gratuit - Guide
5 réponses
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
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à
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
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question

merci !