Séparation d'une chaine de caractere

heritias

XLDnaute Nouveau
Bonjour ,
je souhaite séparer une chaine de caractere delimiter par de '\' . Aprés recherche sur le forum j'ai trouvé ce code

Sub test()
deb = 1
cellule = 2
Range("A1") = Range("A1") & "\"
For n = 1 To Len(Range("A1"))
If Mid(Range("A1"), n, 1) = "\" Then
Cells(1, cellule) = Mid(Range("A1"), deb, n - deb)
deb = n + 1
cellule = cellule + 1
End If
Next n
End Sub

Il fonctionne trés bien sur la cellule A1. Cependant je souhaite le faire fonctionner pour toute ma colonne "A" mais je ne connais pas VBA. Pouvez vous m'indiquer la boucle à realiser ?

Merci par avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Séparation d'une chaine de caractere

Bonjour Heritias, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
'boucle sur toutes les cellules éditées cel de la colonne A
For Each cel In Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row)
    cel.Offset(0, 1).Value = Split(cel.Value, "\", -1)(0)    'renvoit le texte avant le premier "\"
Next cel 'prochaine cellule de la boucle
End Sub
 

heritias

XLDnaute Nouveau
Re : Séparation d'une chaine de caractere

Bonjour,
cela fonctionne sur le 1er texte devant le '\' mais je souhaite décomposer toute la cellule . Il peut y voir dans la cellule de 2 à n "\" . chaque mot trouvé entre les "\" doit se copier dans une cellule differente sur la meme ligne
Je mets un fichier en exemple
 

Pièces jointes

  • exemple.xlsm
    15.1 KB · Affichages: 80
  • exemple.xlsm
    15.1 KB · Affichages: 83
  • exemple.xlsm
    15.1 KB · Affichages: 86

Robert

XLDnaute Barbatruc
Repose en paix
Re : Séparation d'une chaine de caractere

Bonjour Heritias bonjour le forum,

Oui c'est mieux avec une pièce jointe on perd moins de temps... Essai comme ça :
Code:
Sub Macro1()
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim x As Byte 'déclare la variable x (incrément)
 
'boucle 1 : sur toutes les cellules éditées cel de la colonne A
For Each cel In Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row)
    nb = UBound(Split(cel.Value, "\", -1)) 'définit le mombre de foi que "\" apparait
    For x = 0 To nb 'boucle 2 : sur tous les éléments du tableau split
        cel.Offset(0, x + 1).Value = Split(cel.Value, "\", -1)(x)  'renvoit le texte avant xième "\"
    Next x 'prochain élément de la boucle 2
Next cel 'prochaine cellule de la boucle 1
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Séparation d'une chaine de caractere

Bonjour le fil


Pourquoi ne pas simplement utiliser Données/Convertir dans le cas présent ?

EDITION: Ce qui en VBA donnerait par exemple
Code:
Sub test_donnconv()
Selection.TextToColumns Range("A1"), 1, 1, , , , , , True, "/"
End Sub
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
353

Statistiques des forums

Discussions
312 382
Messages
2 087 837
Membres
103 667
dernier inscrit
datengo