Séparation de charactères

Bonsoir à tous, j'ai plusieurs phrases du types

"体 からだ< karada Le corps" (Kanji/Kana/Rōmaji/Français)

et plutôt que de faire le tri entre les 4 à la main, j'ai préférer faire un petit programme pour repérer les espaces et les séparer automatiquement:

Private Sub CommandButton2_Click()

i = 3

Do While Not Range("feuil4!A1").Cells(i, 1) = ""

Position1 = InStr(1, Cells(i, 1), " ", 1)

Position2 = InStr(Position1 + 1, Cells(i, 1), " ", 1)

Position3 = InStr(Position2 + 1, Cells(i, 1), " ", 1)

Cells(i, 5).Value = Mid(Cells(i, 1), 1, Position1)

Cells(i, 6).Value = Mid(Cells(i, 1), Position1 + 1, Position2)

Cells(i, 7).Value = Mid(Cells(i, 1), Position2 + 1, Position3)

Cells(i, 8).Value = Mid(Cells(i, 1), Position3)

i = i + 1

Loop

End Sub

Malheuresement excepté pour la premiere et derniere celulle/séparation, cela ne fonctionne pas, il y a des débordements et je ne sais pas pourquoi.

Pourriez vous m'aidez?

je vous joins le fichier excel

Merci

14prbexcel.xlsm (20.45 Ko)

Bonsoir

Une méthode simple à tester

Remplaces la macro correspondante par celle-ci

Private Sub CommandButton2_Click()
Dim J As Long
Dim I As Integer
Dim Tablo

  Application.ScreenUpdating = False
  For J = 3 To Range("A" & Rows.Count).End(xlUp).Row
    Tablo = Split(Range("A" & J), " ")
    If UBound(Tablo) > 2 Then
      For I = 0 To 2
        Cells(J, 5 + I) = Tablo(I)
      Next I
      For I = 3 To UBound(Tablo)
        Cells(J, "H") = Trim(Cells(J, "H") & " " & Tablo(I))
      Next I
    End If
  Next J
  Application.ScreenUpdating = True
End Sub

Bonjour Banzai64,

En effet cela marche parfaitement, il faut vraiment que je me mette au tableau ^^

Pour ma culture VBA, juste en regardant mon programme, sais-tu pourquoi cela ne fonctionnait pas?

Merci pour l'aide!

Bonjour

Je n'ai pas trop regardé ton code

Les position1, 2 et 3 sont des"distances" par rapport au début de la chaine, mais dans tes formules tu t'en sers comme des longueurs de chaine

La 1ère valeur sera juste

Mais la seconde Mid(Cells(i, 1), Position1 + 1, Position2) Position2 est la longueur depuis le début de la chaine, mais toi tu veux la longueur entre cette position2 et la position1

Je n'ai pas vérifié mais cela serait du style : Pour obtenir le nombre de caractères entre position1 et position2

Mid(Cells(i, 1), Position1 + 1, Position2- Position1)

Ta dernière valeur est bonne car tu prends tout ce qui est après Position3

Bonjour!

Hum...entendu je ne savais pas cela,

et oui en prenant en compte ce fait le code marche beaucoup mieux!

Merci pour tout!

Rechercher des sujets similaires à "separation characteres"