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

Signaler
Messages postés
3
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
29 janvier 2014
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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?

4 réponses

Messages postés
27332
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2020
322
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


Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
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
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
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 ?