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
@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 SubCode 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 FunctionCordialement
@Amadéus. C'est génial!!! Merci merci pour ton aide