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
Statut
Membre
Dernière intervention
29 janvier 2014
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
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 

4 réponses

Messages postés
26133
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 août 2019
314
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
Modérateur
Dernière intervention
11 avril 2018
211
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
Modérateur
Dernière intervention
11 avril 2018
211
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).
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211 -
Pardon : même pas la peine de tester la longueur, avec ce dernier code (se débrouille seul).
clemath69
Messages postés
3
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
29 janvier 2014
-
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
Modérateur
Dernière intervention
11 avril 2018
211
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