Insérer un espace dans une chaîne de texte avec condition [Résolu]

Messages postés
3
Date d'inscription
mardi 28 janvier 2014
Dernière intervention
29 janvier 2014
- 28 janv. 2014 à 18:04 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 29 janv. 2014 à 12:41
Bonjour j'ai une chaîne de texte de type code postal étranger, je cherche à développer une petite macro pour rechercher si dans la Colonne B j'ai un indicatif "GB" je vais modifier la chaîne de texte contenue dans la colonne A en insérant en 3e position en partant de la droite un espace. Comment puis je faire?

Sub EspUK()
' EspUK Macro
' ajoute l'espace avant les trois dernières lettres pour les codes en GB
'SI la valeur entre parenthèses (colonne indicateur du pays) est ="GB" si condition vraie alors on
'exécute les instructions placées après THEN
For Each cel In Range A:A
cel.Value = Right(cel.Value & "", 3)
Next cel
End Sub
Je n'arrive pas à placer ma condition et tout s'efface pour ajouter mon espace?
Afficher la suite 

Votre réponse

6 réponses

Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 28 janv. 2014 à 18:18
0
Merci
Bonjour,

Sub EspUK()
' EspUK Macro
' ajoute l'espace avant les trois dernières lettres pour les codes en GB
'SI la valeur entre parenthèses (colonne indicateur du pays) est ="GB" si condition vraie alors on
'exécute les instructions placées après THEN
For Each cel In Range("A1:A50")
 ValeurdelaCellule = cel.Value
 NumeroLigneCellule = cel.Row
'test si GB est présent dans la colonne B
 If Cells(NumeroLigneCellule, 2).Value = "GB" Then
    'On ajoute un espace à la valeur de la cellule si sa longueur est supérieur à 3!
    If Len(ValeurdelaCellule) > 3 Then
        cel.Value = Left(ValeurdelaCellule, Len(ValeurdelaCellule) - 3) & " " & Left(ValeurdelaCellule, 3)
    End If

End If
Next
End Sub


Commenter la réponse de jordane45
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 janv. 2014 à 18:36
0
Merci
Bonjour (et un salut à jordane45)
On peut également utiliser la fonction strreverse de vba.
Exemple :
TOTO = "1234567"
titi = "GB"
If titi = "GB" Then
tata = StrReverse(TOTO)
TOTO = StrReverse(Left(tata, 2) & " " & Mid(tata, 3))
End If
MsgBox TOTO
y ajouter bien évidemment le test de longueur préconisé par jordane45.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 janv. 2014 à 18:44
0
Merci
On peut d'ailleur également s'amuser avec Format ===>>
Exemple :
toto = "1234567"
titi = "GB"
If titi = "GB" Then
toto = Format(toto, String(Len(toto - 2), "@") & " @@")
End If
MsgBox toto
(ne pas oublier le test sur longueur si nécessaire).
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 28 janv. 2014 à 21:02
Pardon : même pas la peine de tester la longueur, avec ce dernier code (se débrouille seul).
Messages postés
3
Date d'inscription
mardi 28 janvier 2014
Dernière intervention
29 janvier 2014
- 29 janv. 2014 à 12:19
Merci tout cela fonctionne c'est super Merci encore
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 29 janv. 2014 à 12:41
0
Merci
Il convient alors de clore s'il te plait cette discussion (un clic sur le tag RESOLU au niveau de ton tout premier message).
Quelle solution as-tu finalement retenue ?
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.