Extraire lignes de caracteres dans long texte

11recherche-txt.xlsx (10.89 Ko)

Bonjour,

Je recherche à extraire des lignes de caractères dans un texte et les renvoyer dans chaque rubrique sur même ligne !
Ces lignes commencent par :
(exemple)

1 x jhsbvhbivbiubiv

1 x jhsb vn kjbvubqouha

Etc...

Cependant il peut y en avoir 1 ou plusieurs, jusqu'à 5

Merci pour votre aide
Dann

Bonjour,

tu peux utiliser les expressions régulières ... mais je n'ai pas compris quels chaînes de caractères tu recherches ?

En fait je veux ressortir les chaines des lignes commençant par 1 x ?

1 x b b hbbcbhghhh

1 x gvgvhjvhbhjbhhhh


La première expression dans la rubrique "Colonne B"
La deuxième expression dans la rubrique "Colonne C"

Exc...

Sub xxx()
With ActiveSheet.ListObjects(1)
    For i = 1 To .ListRows.Count
        col = 2
        tbl = Split(.DataBodyRange.Cells(i, 1), Chr(10))
        For j = 1 To UBound(tbl)
            If tbl(j) Like "*1 x*" Then
                .DataBodyRange.Cells(i, col) = tbl(j)
                col = col + 1
            End If
        Next
    Next
End With
End Sub
13recherche-txt.xlsm (16.82 Ko)

Est-ce que la proposition te convient ?

Bonjour,

Je reprends ma base.
Ci-joint mon fichier tel que structuré (épuré).
Je souhaiterais "en plus"

10bdtest1.xlsx (32.96 Ko)

copier le PRIX associé aux lignes extraites depuis TEXTE en colonne "I" !
Est-ce possible ?
Merci d'avance
Dann

je ne vois pas le code que j'avais proposé !

Non ! Parce ce que je suis reparti de ma base de travail ou j'ai supprimé de nombreuses lignes pôur alléger !
J'ai essayé d'importer le code, mais comme les colonnes sont décalées par rapport au fichier initial, je n'y arrive pas

Sub xxx()
With ActiveSheet.ListObjects(1)
    For i = 1 To .ListRows.Count
        col = 12 ' résultats à partir de la colonne 12
        tbl = Split(.DataBodyRange.Cells(i, 9), Chr(10)) ' texte e colonne 9
        For j = 1 To UBound(tbl)
            If tbl(j) Like "*1 x*" Then
                .DataBodyRange.Cells(i, col) = tbl(j)
                col = col + 1
            End If
        Next
    Next
End With
End Sub

Function prix(cel As Range)
  Set obj = CreateObject("vbscript.regexp")
  obj.Pattern = "([0-9])+[.]{1}([0-9])+"
  Set res = obj.Execute(cel.Value)
  If res.Count > 0 Then prix = res(0)
End Function
10bdtest1.xlsm (38.00 Ko)

Merci, je n'arrive pas à transposer la MACRO dans ma base de travail ?
J'ai fait un copié/collé dans VBA module 1 .... mas sans résultat !
Je ne dois oublier quelque chose ?

La colonne PRIX fonctionne !

image

Si prix cela fonctionne, j'ai remplacé la sub par une function

6bdtest1.xlsm (38.68 Ko)

Je n'y arrive pas ! J'ai bien copiè "=@xxx([@TEXTE];1) / =@xxx([@TEXTE];2) Etc..." dans les colonnes adéquates
Dès que je lance "Executer" il y a la fenêtre Macro qui apparaît !???

image

Tu peux me passer ton fichier en mp si besoin.

C'est une fonction, fais seulement F9, vérifie qu'elle est bien présente sur toutes les lignes

Rechercher des sujets similaires à "extraire lignes caracteres long texte"