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

clemath69 3 Messages postés mardi 28 janvier 2014Date d'inscription 29 janvier 2014 Dernière intervention - 28 janv. 2014 à 18:04 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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

jordane45 21039 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 19 mai 2018 Dernière intervention - 28 janv. 2014 à 18:18
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 janv. 2014 à 18:36
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 janv. 2014 à 18:44
0
Utile
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 janv. 2014 à 21:02
Pardon : même pas la peine de tester la longueur, avec ce dernier code (se débrouille seul).
clemath69 3 Messages postés mardi 28 janvier 2014Date d'inscription 29 janvier 2014 Dernière intervention - 29 janv. 2014 à 12:19
Merci tout cela fonctionne c'est super Merci encore
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 janv. 2014 à 12:41
0
Utile
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.