XL 2010 Extraction texte cellule avec plusieurs critères

lola18

XLDnaute Junior
Bonjour,

Tout d'abord, mes excuses, sujet surement déjà traité, j'ai d'ailleurs cherché des formules sur le forum et tenté de les appliquer à ma problématique... en vain

Sujets consultés:

Mon problème : J'ai des urls avec plusieurs répertoire et souhaiterai en extraire qu'un seul ( le premier en l’occurrence). J'ai trois formats d'urls différents :

  • /dossiers/texte123 résultats souhaité dossiers
  • /article-126 résultats souhaité
    article-124
  • /carte?method=select&Str_Search=14 résultats souhaité carte
Comme vous pourrez le constater j'ai différents délimiteurs / ou ? ou rien

Vous trouverez en fichier exemple en PJ.

Merci d'avancez
 

Pièces jointes

  • lola_extraction.xlsx
    9.5 KB · Affichages: 22

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Lola, bonjour le forum,

Une proposition VBA avec le code ci-dessous :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim P As Integer 'déclare la variable P (Position)

Set O = Worksheets("Feuil1") 'définit l'onget O
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
For I = 3 To DL 'boucle sur toutes les lignes I de 3 à DL
    If O.Cells(I, "A").Interior.ColorIndex = xlNone Then 'condition : si l'intérieur de la cellule n'est pas coloré
        Select Case UBound(Split(O.Cells(I, "A").Value, "/")) 'agit en fonction du nombre de slashes "/" contenu dans la cellule
            Case Is > 1 'plus d'un
                'renvoie dans la colonne B le texte entre les deux premiers slashes
                O.Cells(I, "B").Value = Split(O.Cells(I, "A"), "/")(1)
            Case Is = 1 'un seul
                P = InStr(1, O.Cells(I, "A"), "?", vbTextCompare) 'définit la position P du caractère "?"
                If P = 0 Then 'condition : si le caractère "?" n'existe pas
                    'renvoie dans la colonne B le texte après le premier slash
                    O.Cells(I, "B").Value = Mid(O.Cells(I, "A").Value, 2)
                Else 'sinon (si la caractère "?" existe)
                    'renvoie dans la colonne B le texte après le premer slash et avant "?"
                    O.Cells(I, "B").Value = Mid(O.Cells(I, "A"), 2, P - 2)
                End If 'fin de la condition
        End Select 'fin de l'action en fontion du nombre de slashes
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub
 

job75

XLDnaute Barbatruc
Bonjour lola18, Robert,

Vous auriez pu soigner un peu plus la présentation du fichier et mettre le calcul des formules en mode automatique :rolleyes:

Si tous les url commencent par un slash "/", formule en B2 à tirer vers le bas :
Code:
=STXT(A2;2;TROUVE("/";SUBSTITUE(A2;"?";"/")&"/";2)-2)
A+
 

Discussions similaires

Réponses
11
Affichages
3 K

Statistiques des forums

Discussions
312 198
Messages
2 086 133
Membres
103 128
dernier inscrit
pmordel@parisbrestconsult