Extraire caractères entre deux x
Fermé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
- Excel extraire entre deux caractères
- Extraire une video youtube - Guide
- Caractères ascii - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Extraire son video - Guide
5 réponses
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
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à
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
9 sept. 2022 à 15:19
Merci et bon week-end !
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question14 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:
où CTRL+E si vous avez la version récente d'Excel.
Bonne journée.
9 sept. 2022 à 11:06
merci !