Insérer un espace dans une chaîne de texte avec condition

Résolu
clemath69 Messages postés 3 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 29 janvier 2014 - 28 janv. 2014 à 18:04
ucfoutu Messages postés 18038 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?

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
28 janv. 2014 à 18:36
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.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
29 janv. 2014 à 12:41
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 ?
1
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
28 janv. 2014 à 18:18
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


0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
28 janv. 2014 à 18:44
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).
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
28 janv. 2014 à 21:02
Pardon : même pas la peine de tester la longueur, avec ce dernier code (se débrouille seul).
0
clemath69 Messages postés 3 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 29 janvier 2014
29 janv. 2014 à 12:19
Merci tout cela fonctionne c'est super Merci encore
0
Rejoignez-nous