[RESOLU]Spliter une chaine de caractere

Yaniv

XLDnaute Junior
Bonjour tout le monde , je dispose de chaine de caractere de la forme
"10m10y @123 vs 10m10y @456"
en fait j aimerais decouper cette chaine de carctere en 2 , a partir du vs
cad obtenir "10m10y @123 " sur une ligne et "10m10y @456" sur la ligne juste en dessous ainsi que de leur attribuer un numero de reference par exemple 1 sur les 2 lignes.( dans le but de les associer a une meme famille pour que je sache qu il correspondent au code initial)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Spliter une chaine de caractere

Bonjour.
on peut spécifier une sous chaîne quelconque avec des espaces au Split, pas nécessairement un caractère spécial unique :
VB:
Sub ssss()
Dim Spl() As String
Spl = Split("10m10y @123 vs 10m10y @456", " vs ")
MsgBox Spl(0) & vbLf & Spl(1)
End Sub
 

Yaniv

XLDnaute Junior
Re : Spliter une chaine de caractere

Tres bien j ai compris l idee merci bcp les amis , toutefois ce que je voudrais faire cest
-si "10m10y @123 vs 10m10y @456" est sur la ligne B1 alors j aimerais avoir spl(0) sur la ligne B1 et spl(1) sur la ligne B2
tout en les referance (mettre le chiffre 1 par ex sur les les lignes A1 et A2)
 

Yaniv

XLDnaute Junior
Re : Spliter une chaine de caractere

j ai fait la macro suivante qui m a l air de marcher
Code:
Sub spread()
 Dim spl() As String
 With Worksheets("feuil1")
 spl = Split(Range("A1"), " vs ")
 Range("A1").Value = spl(0)
 Range("A2").Value = spl(1)
 End With
 End Sub
 

Efgé

XLDnaute Barbatruc
Re : Spliter une chaine de caractere

Bonjour Yaniv, JHA,Dranreb
Une proposition, mais sans exemple, ce n'est pas évident....
En partant du principe que les données sont en colonne A.
Les résultats seront en colonnes B (les morceaux de données) et C (la référence des morceaux)
VB:
Sub coupe()
Dim I&, J&, K&, T As Variant
With Sheets("Feuil1") ' Nom de feuille a adapter
    For J = 1 To 10 'Pour les lignes de 1 à 10 A adapter
        T = Split(.Range("A" & J).Value, " vs ")
        For I = LBound(T) To UBound(T)
            K = K + 1
            .Range("B" & K).Value = Trim(T(I))
            .Range("C" & K).Value = J
        Next I
    Next J
End With
End Sub
Cordialement
 

Yaniv

XLDnaute Junior
Re : Spliter une chaine de caractere

jer peux juste te demander une derniere chose stp c est qu au lieu d avoir mes morceaux de données en colonnes B je les voudrais en colonne A et ecraser le code de depart (pour le 1er morceau) et creer une nouvelle ligne contenant le 2eme morceau
 

Efgé

XLDnaute Barbatruc
Re : Spliter une chaine de caractere

Re
Désolé Dranreb , je ne voulais pas te déranger durant tes ablutions
Une proposition (car je pense qu'il n'est pas nécessaire d'insérer des lignes)
VB:
Sub coupe()
Dim T As Variant, Treport As Variant
Dim Fin&, I&, J&, K&, L&


Deb = 1 ' Première ligne A adapter
Fin = 10 'Pour les lignes jusqu'a 10 A adapter


ReDim Treport(1 To ((Fin - Deb) + 1) * 3, 1 To 2)
With Sheets("Feuil1") ' Nom de feuille a adapter
   For J = Deb To Fin
       T = Split(.Range("A" & J).Value, " vs ")
        L = L + 1
        For I = LBound(T) To UBound(T)
            K = K + 1
            Treport(K, 1) = Trim(T(I))
            Treport(K, 2) = L
        Next I
    Next J
    Cells(Deb, 1).Resize(K, 2) = Treport
End With
End Sub

Cordialement
 
Dernière édition:

Yaniv

XLDnaute Junior
Re : [RESOLU]Spliter une chaine de caractere

J aimerais qd meme vous psoer une derniere question , je vous prie de m excuser du derangement encore une fois.
En fait j aimerais que mon code fonction (autrement que le split de la chaine s effectue) seulement si la longueur de la chaine de caractere situe a droite du vs comporte plus de 4 caracteres
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 537
dernier inscrit
alisafred974