Extraire plusieurs données commencant par "XX" dans une cell

Bonjour,

J'ai un extract de Jira sous Excel avec une liste de demandes liées.

Dans une même cellule, je vais donc avoir les données suivantes:

"SUP-16763, SUP-16646, EB-269, BSL-6216, ABL-483, BSL-5591, BSL-6508, SUP-16875, LCC-3875, MOB-2645, RIPA-2101".

Je voudrais pouvoir en extraire uniquement les données commençant pas "SUP", soit SUP-16763, SUP-16646, SUP-16875.

Je pense que la fonction STXT doit pouvoir faire le job, mais je n'y arrive pas.

Auriez-vous une solution?

Merci beaucoup

Bonjour

Extraire tout, je sais.

Après, reste à savoir comment est ton fichier et où et comment tu veux extraire. En lignes? En colonnes?

cordialement

56lennyna.xlsx (11.71 Ko)

@Amadéus,

Merci beaucoup pour cette première réponse.

En fait, dans une autre colonne, je souhaiterais avoir tous les items commençant par "SUP".

Je te mets en PJ une extraction de mon fichier avec en colonne B le résultat que je souhaiterais (le vrai fichier fait plus de 500 lignes...)

Bonjour

Un peu de gymnastique, faute de réponse des spécialistes VBA (dont je ne suis pas)

Code dans Module1

Sub Extraction()
'Blocage du rafraichissement de l'écran
Application.ScreenUpdating = False
    Sheets("general_report").Select
    ' Création d'une feuille de traval
    Sheets("general_report").Copy After:=Sheets(1)
    ActiveSheet.Name = "Travail"
    'Formule d'extraction sur la colonne B, feuille "Travail"
    Range("a2", Range("a2").End(xlDown)).Offset(0, 1).Select
    Selection.FormulaR1C1 = _
        "=IFERROR(MID(RC[-1],1,SEARCH(CHAR(44),RC[-1],1)-1),RC[-1])"
    'Sélection d'un tableau de 30 colonnes de largeur et mise en place des formules suivantes, ici de colonne C et 29 suivantes
    Range(Selection.Offset(0, 1), Selection.Offset(0, 30)).Select
    Selection.FormulaR1C1 = _
        "=IF(COLUMN()-2<LEN(RC1)-LEN(SUBSTITUTE(RC1,CHAR(44),"""")),TRIM(MID(LEFT(RC1,FIND(""|"",SUBSTITUTE(RC1,CHAR(44),""|"",COLUMN()-1))-1),FIND(""|"",SUBSTITUTE(RC1,CHAR(44),""|"",COLUMN()-2))+1,99)),IF(COLUMN()-2=LEN(RC1)-LEN(SUBSTITUTE(RC1,CHAR(44),"""")),TRIM(MID(RC1,FIND(""|"",SUBSTITUTE(RC1,CHAR(44),""|"",LEN(RC1)-LEN(SUBSTITUTE(RC1,CHAR(44),""""))))+1,99)),""""))"
Range("a2", Range("a2").End(xlDown)).Offset(0, 1).Select
    'Copie des résultats et remplacement des formules par les valeurs
    Range(Selection, Selection.Offset(0, 31)).Select
    Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    'Effacement des cellules du tableau ne commençant pas par "SUP"
    Dim Cel As Range
For Each Cel In Selection
If Left(Cel.Value, 3) <> "SUP" Then
Cel.Clear
End If
Next Cel
'Inscription de la formule de concaténation en colonne B de la Feuille "general_report"
Sheets("general_report").Activate
Range("a2", Range("a2").End(xlDown)).Offset(0, 1).Select
Selection.FormulaR1C1 = "=concat(Travail!RC2:RC[30])"
'Copie des valeurs en remplacement des formules
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
'Suppression de la Feuille "Travail"
    Sheets("Travail").Select
    Application.DisplayAlerts = False
    ActiveWindow.SelectedSheets.Delete
    Application.DisplayAlerts = True
    Sheets("general_report").Range("B2").Select
End Sub

Code Fonction personnalisée de concaténation dans Module2

Function concat(champ)
   temp = ""
   For Each d In champ
     If Len(d.Value) > 0 Then temp = temp & d.Value & ","
   Next d
   concat = temp
End Function

Cordialement

@Amadéus. C'est génial!!! Merci merci pour ton aide

Rechercher des sujets similaires à "extraire donnees commencant"