XL 2010 Extraction texte cellule avec plusieurs critères

  • Initiateur de la discussion Initiateur de la discussion lola18
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
Bonjour lola18, Robert,

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

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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour