Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

trouver le texte à partir d'un espace via vba

24 réponses
Avatar
marc
Bonjour
J'aimerais être capable de sortir le texte à partir de la droite jusqu'à un espace

exemple:
A1= Fred Caillou Conseiller aux ventes, HANNOVER NIEDERSACHSEN GERMANY
J'aimerais avoir en B1
B1= Germany
Le texte est déjà importé en excel. Alors j'aimerais avoir une solution en VBA, mais si je sais qu'on peut le faire via une formule.
La macro devrait s'exécuter sur les cellules sélectionnés car chaque fichier n'ont pas le même nombre de ligne.
Merci de votre aide
Marc

4 réponses

1 2 3
Avatar
marc
Serge
je vois que dans un fichier "vierge", si je fais cette macro, ça fonctionne pas, mais je remplace 160 par 32, oui, dans ce cas, ça
fonctionne.
Je confirme que mes données sont importés dans Excel.
Désolé de ne pas l'avoir mentionné plus rapidement.
Merci
marc
"garnote" a écrit dans le message de news:
Salut Marc,

En remplaçant Chr(32) par Chr(160), ça semble correct.
Est-ce bien le cas ?

Sub villes_pays()
For Each c In Selection
t = Trim(c)
L = Len(t)
For i = L To 1 Step -1
If Mid(t, i, 1) = Chr(160) Then
m = i
Exit For
End If
Next i
For i = L To 1 Step -1
If Mid(t, i, 1) = "," Then
n = i
Exit For
End If
Next i
'Ville
c.Offset(0, 1) = Trim(Mid(t, n + 1, m - n - 1))
'Pays
c.Offset(0, 2) = Mid(t, m + 1)
Next c
End Sub

Serge




"marc" a écrit dans le message de news:
Bonjour Isabelle
Ça fonctionne merveilleusement bien.
Un gros merci pour ton aide et bonne journée
Marc

"isabelle" a écrit dans le message de news: O9R$
bonjour Marc,

voila,

Sub Macro1()
For Each c In Selection
For i = Len(c) To 1 Step -1
zz = Mid(c, i, 1)
If Not c.Offset(0, 2) <> "" Then
If Mid(c, i, 1) <> Chr(160) Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 2) = x
x = ""
GoTo suivant
End If

Else
suivant:
If Mid(c, i, 1) <> "," Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 1) = x
x = ""
Exit For
End If
End If

Next
Next
End Sub

isabelle



marc a écrit :
Bonjour Isabelle
J'ai essayé ta macro sur un de mes fichiers et le résultat n'est pas aussi bon qu'avec le fichier que tu m'as envoyé.
Voici un exemple d'un de mes fichiers.

http://cjoint.com/?fvq34z64HH
Un gros merci pour ton aide
marc














Avatar
garnote
Alors pour que ça fonctionne avec Chr(32) et Chr(160),
est-ce une bonne idée de :

Sub villes_pays()
For Each c In Selection
t = Trim(c)
L = Len(t)
For i = L To 1 Step -1
pt = Mid(t, i, 1)
If pt = Chr(32) Or pt = Chr(160) Then '***
m = i
Exit For
End If
Next i
For i = L To 1 Step -1
If Mid(t, i, 1) = "," Then
n = i
Exit For
End If
Next i
'Ville
c.Offset(0, 1) = Trim(Mid(t, n + 1, m - n - 1))
'Pays
c.Offset(0, 2) = Mid(t, m + 1)
Next c
End Sub

Serge














"isabelle" a écrit dans le message de news:

salut Serge,

c'est un caractère dans le texte que Marc a fourni,

j'ai mis le texte en A1
en B1 =CODE(STXT($A$1;LIGNE();1))
en C1 ÊR(B1)
et recopier vers le bas pour trouver le fameux semblant d'espace qui est
en réalité un code 160

isabelle

garnote a écrit :
Isabelle, explique-moi le Chr(160) SVP.

Cette macro ne fonctionne pas si je l'utilise sur le document de Marc
mais si je réécris ses textes, ça fonctionne !


Sub villes_pays()
For Each c In Selection
t = Trim(c)
L = Len(t)
For i = L To 1 Step -1
If Mid(t, i, 1) = Chr(32) Then
m = i
Exit For
End If
Next i
For i = L To 1 Step -1
If Mid(t, i, 1) = "," Then
n = i
Exit For
End If
Next i
'Ville
c.Offset(0, 1) = Trim(Mid(t, n + 1, m - n - 1))
'Pays
c.Offset(0, 2) = Mid(t, m + 1)
Next c
End Sub









"isabelle" a écrit dans le message de news:
O9R$

bonjour Marc,

voila,

Sub Macro1()
For Each c In Selection
For i = Len(c) To 1 Step -1
zz = Mid(c, i, 1)
If Not c.Offset(0, 2) <> "" Then
If Mid(c, i, 1) <> Chr(160) Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 2) = x
x = ""
GoTo suivant
End If

Else
suivant:
If Mid(c, i, 1) <> "," Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 1) = x
x = ""
Exit For
End If
End If

Next
Next
End Sub

isabelle



marc a écrit :

Bonjour Isabelle
J'ai essayé ta macro sur un de mes fichiers et le résultat n'est pas
aussi bon qu'avec le fichier que tu m'as envoyé.
Voici un exemple d'un de mes fichiers.

http://cjoint.com/?fvq34z64HH
Un gros merci pour ton aide
marc














Avatar
garnote
Salut Denis,

Ces espaces insécables peuvent-ils se retrouver au début
et à la fin d'un texte ?
Si oui, quand j'utilise Trim, est-ce qu'ils disparaissent ?

Serge


"MichDenis" a écrit dans le message de news:
%
le Chr(160) SVP ce n'est pas un espace fait par la barre d'espacement
mais un "espace insécable" fréquent lors d'un importation de données



"garnote" a écrit dans le message de groupe de
discussion :


Isabelle, explique-moi le Chr(160) SVP.

Cette macro ne fonctionne pas si je l'utilise sur le document de Marc
mais si je réécris ses textes, ça fonctionne !


Sub villes_pays()
For Each c In Selection
t = Trim(c)
L = Len(t)
For i = L To 1 Step -1
If Mid(t, i, 1) = Chr(32) Then
m = i
Exit For
End If
Next i
For i = L To 1 Step -1
If Mid(t, i, 1) = "," Then
n = i
Exit For
End If
Next i
'Ville
c.Offset(0, 1) = Trim(Mid(t, n + 1, m - n - 1))
'Pays
c.Offset(0, 2) = Mid(t, m + 1)
Next c
End Sub









"isabelle" a écrit dans le message de news:
O9R$
bonjour Marc,

voila,

Sub Macro1()
For Each c In Selection
For i = Len(c) To 1 Step -1
zz = Mid(c, i, 1)
If Not c.Offset(0, 2) <> "" Then
If Mid(c, i, 1) <> Chr(160) Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 2) = x
x = ""
GoTo suivant
End If

Else
suivant:
If Mid(c, i, 1) <> "," Then
x = Mid(c, i, 1) & x
Else
c.Offset(0, 1) = x
x = ""
Exit For
End If
End If

Next
Next
End Sub

isabelle



marc a écrit :
Bonjour Isabelle
J'ai essayé ta macro sur un de mes fichiers et le résultat n'est pas
aussi bon qu'avec le fichier que tu m'as envoyé.
Voici un exemple d'un de mes fichiers.

http://cjoint.com/?fvq34z64HH
Un gros merci pour ton aide
marc









Avatar
MichDenis
| Ces espaces insécables peuvent-ils se retrouver au début
| et à la fin d'un texte ?

*** à la limite, ce caractère peut se retrouver n'importe où
dans une chaîne de cellule, cela dépend de la source
des données (Importation d'une autre application)

| Si oui, quand j'utilise Trim, est-ce qu'ils disparaissent ?

Non, la fonction supprime les espaces (chr(32)) seulement
le caractère ascii 160 (espace insécable) est un caractère
comme n'importe quel autre. "Trim" n'est valide que pour
le caractère ascii 32
1 2 3