Extraire x caractères après un slash

  • Initiateur de la discussion Initiateur de la discussion Francis
  • 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 !

Francis

XLDnaute Junior
Bonjour le forum

Dans un post j’avais demandé :
Dans une cellule, contenant X caractères de tous types, genre (04.555/ABCDEF/13)
Je cherche à récupérer les deux derniers caractères (qui sont toujours des chiffres) et les coller dans une cellule contiguë et ce dans toutes les feuilles du classeur

Suite à l’aide de CB60, Dixit, Spitnolan08 et d’Hervé, (merci encore) j’ai fait tourner l’application. Elle tourne très bien.
La phrase magique était :
.range("F3").Offset(0, 2).FormulaR1C1 = "=RIGHT(RC[-2],2)"
ou
.range("F3").Offset(0, 2) = RIGHT(Range("F3"),2)

Comment transformer cette phrase pour que l’extraction se fasse après le dernier slash, indépendamment du nombre de caractères après ce slash.
Merci pour votre aide
Francis
 
Re : Extraire x caractères après un slash

Bonjour Isabellec, Dixit et le forum
Je vous remercie de vos conseils et je me suis mis au travail.

code = [E2].Value
For i = Len(code) To 1 Step -1
If Mid$(code, i, 1) = "/" Then
slash = i
Exit For
End If
Next i

extrait = Len(code) - slash
[G3].Value = Mid(code, i + 1, extrait)

En guise de tuto, s’il y a d’autres façons de faire, je suis preneur,en particulier avec "split" que je ne connais pas.
Merci
Francis
 
Re : Extraire x caractères après un slash

Bonjour Francis, IsabelleC, dixit

La fonction split permet de découper une cellule en plusieurs morceaux selon un séparteur. Ce dernier peut être un espace, une virgule, un slash ...... en fait ce que tu veux.

Ces morceaux sont mis dans un tableau. Le premier élément du tableau a pour numéro 0, le 2ème = 1, le 3ème = 2 et ansi de suite.
Dans un tableau, tu repères le premier élément avec l'instruction LBound et le dernier avec UBound.

Comme exemple :
En A1 tu mets ceci : 4.555/ABCDEF/13 et tu testes les deux macros suivantes :

Code:
Sub decoupe()

Dim zone As Variant
zone = Split(Range("A1"), "/")
Cells(1, 3) = zone(LBound(zone))
Cells(2, 3) = zone(1)
Cells(3, 3) = zone(UBound(zone))

End Sub


Sub découpe2()

Dim zone As Variant
Dim i As Integer
zone = Split(Range("A1"), "/")
For i = 0 To UBound(zone)
  Cells(i + 1, 4) = zone(i)
Next

end sub

Dans ce cas tu auras un tableau à 3 éléments.
Dim zone as variant déclare le tableau
zone = Split(Range("A1"), "/") Détermine la cellule à découper et le séparateur, ici : le /

zone(LBound(zone)) = le 1er élément du tableau ( n°0)
zone(1) = le 2ème élément du tableau (n°1)
zone(UBound(zone)) = le dernier élément du tableau ( n°2)

Pour la boucle, on boucle sur les éléments du tableau du premier au dernier donc de 0 à Ubound(zone).
Cells(i + 1, 4) : i + 1 car le premier i = 0 et Cells(0,4) provoquerai une erreur (cellule qui n'existe pas ).

Pour plus d'info va voir dans l'aide d'Excel en VBA.

Voilà j'espère que ca éclairera un peu ta lanterne 😉

bonne journée
 
Dernière édition:
Re : Extraire x caractères après un slash

Bonjour à tous,

Dans l'excellent code d' Isabelle, il faut remplacer 65563 par 65536 😛

Bonne journée

Code:
Sub DernierSlash()

Dim Plage As Range
Dim Tableau As Variant
Dim C As Range
Dim DL As Long

With Sheets("feuil1")
    DL = .Range("a65536").End(xlUp).Row
    Set Plage = .Range("A2:A" & DL)
     For Each C In Plage
        Tableau = Split(C, "/") ' split cree un tableau matriciel dont chaque element est separe par un slash
        C.Offset(0, 1) = Tableau(UBound(Tableau)) 'comme on veut extraire apres le dernier slash, on utilise ubound qui va recuperer le _
                                                    'dernier element du tableau.si le nbre de slash est fixe, on peut prendre le numero _
                                                    ' de l'elt ( voir ex suivant)
    Next
End With
End Sub

' variante : apres le 1er slash
Sub premierslash()

Dim Plage As Range
Dim Tableau As Variant
Dim C As Range
Dim DL As Long

With Sheets("feuil1")
    DL = .Range("a65536").End(xlUp).Row
    Set Plage = .Range("A2:A" & DL)
     For Each C In Plage
        Tableau = Split(C, "/") ' split cree un tableau matriciel dont chaque element est separe par un slash
        C.Offset(0, 2) = Tableau(1) 'comme on veut extraire apres le premier slash,on extrait l'elt 1 du tableau
    Next
End With
End Sub
 
- 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