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 !
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
bonjour,
se baser sur instr qui renvoie la position du caractère et utiliser len et right
quelquechose du genre (non testé) chaîne = right(len("texte")-instr("texte"))
bye
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 😉
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
bonjour le forum
Merci beaucoup pour ces tutos
A moi maintenant de travailler et de décortiquer ces lignes.
A+ sur ce forum,dans un autre post....
Francis
- 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