Changer caractère dans une chaine
moseca
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
Normad Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Normad Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Bonjour les experts. J'aimerais avoir de l'aide. SVP, SVP.
J'ai une chaine de caractère comme ceci : 1ABC2BCD5CDE12EFG15CDF. Alors, il y a toujours 3 lettres précédées de 1 à 2 chiffres (les chiffres varient de 1 à 15).
J'aimerais une macro VBA (ou formule Excel) qui ajoute un signe moins devant les chiffre. On aura donc: -1ABC-2BCD-5CDE-12EFG-15CDF
MERCI DE VOTRE PRÉCIEUX AIDE !!!
J'ai une chaine de caractère comme ceci : 1ABC2BCD5CDE12EFG15CDF. Alors, il y a toujours 3 lettres précédées de 1 à 2 chiffres (les chiffres varient de 1 à 15).
J'aimerais une macro VBA (ou formule Excel) qui ajoute un signe moins devant les chiffre. On aura donc: -1ABC-2BCD-5CDE-12EFG-15CDF
MERCI DE VOTRE PRÉCIEUX AIDE !!!
A voir également:
- Changer caractère dans une chaine
- Changer dns - Guide
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
4 réponses
Bonjour,
VBA: pas de controle si la chaine contient autre chose que des lettres et chiffres, la chaine doit etre du format indique (minuscules admises)
Il y a peut-etre plus simple, a voir
VBA: pas de controle si la chaine contient autre chose que des lettres et chiffres, la chaine doit etre du format indique (minuscules admises)
Il y a peut-etre plus simple, a voir
Sub test()
Dim Flag_paq1 As Boolean
texte = UCase(Worksheets("feuil1").Range("C3"))
Lg = Len(texte)
Lg1 = Lg - 1
pos0 = 1
For p = 1 To Lg1
AsLC = Asc(Mid(texte, p, 1))
AsLS = Asc(Mid(texte, p + 1, 1))
'test si lettre suivie d'un chiffre
If AsLC > 64 And AsLS < 59 Then
If Not Flag_paq1 Then
paq1 = p
Flag_paq1 = True
End If
If p = paq1 Then
of7 = 0
Else
of7 = 1
End If
texte2 = texte2 & Mid(texte, pos0 + of7, p - pos0 + (1 - of7)) & "-"
pos0 = p
End If
Next p
texte2 = "-" & texte2 & Mid(texte, pos0 + of7, Lg - pos0 + (1 - of7))
Worksheets("feuil1").Range("C5") = texte2
End Sub
Bonjour, Merci! Je vais essayer ça.
Mais la chaine contient que des lettres et chiffre, comme je l'ai indiqué dans mon exemple.
MERCI ENCORE!
Mais la chaine contient que des lettres et chiffre, comme je l'ai indiqué dans mon exemple.
MERCI ENCORE!
Bonjour
En fiat, je viens de remarquer un petit problème. Si on a 6 caractère ça fonctionne pas correctement.
Par exemple : 1ABC2XYC ça donne -1ABC-C2XYZ
MERCI DE M'AIDER!
En fiat, je viens de remarquer un petit problème. Si on a 6 caractère ça fonctionne pas correctement.
Par exemple : 1ABC2XYC ça donne -1ABC-C2XYZ
MERCI DE M'AIDER!
Bonjour,
En testant les caractères l'un après l'autre avec la fonction IsNumeric. Si un carctère numérique est trouvé prend aussi en compte le(s) suivant(s) s'ils sont aussi numéique avant d'ajouter un "-" devant.
En testant les caractères l'un après l'autre avec la fonction IsNumeric. Si un carctère numérique est trouvé prend aussi en compte le(s) suivant(s) s'ils sont aussi numéique avant d'ajouter un "-" devant.
Sub Modifie() Dim strBase As String, NewStr As String, I As Integer, Y As Integer, Car As String strBase = Worksheets("feuil1").Range("C3").Value For I = 1 To Len(strBase) Car = Mid(strBase, I, 1) If IsNumeric(Car) Then For Y = I + 1 To Len(strBase) If IsNumeric(Mid(strBase, Y, 1)) Then Car = Car & Mid(strBase, Y, 1) I = I + 1 Else Exit For End If Next Y NewStr = NewStr & "-" & Car Else NewStr = NewStr & Car End If Next I Worksheets("feuil1").Range("C5").Value = NewStr End Sub
Mais y a t il moyen d'y ajouter une boucle for car je dois faire changer plusieurs lignes, par exemple, faire cette opération pour les Range("A1:A15") et les mettre dans une autre plage, par exemple Range ("B1:B15"). J'ai essayer mais ça a planté.
MERCI ENCORE CHAMPION(ne).
je vous fais ca de suite
pour cellules A1 a A15 vers B1 a B15
je l'ai essayé mais ça plante. Voici la ligne qui plante :
texte2 = "-" & texte2 & Mid(texte, pos0 + of7, Lg - pos0 + (1 - of7))
MERCI!
fichier de test: https://www.cjoint.com/?DEpuqf5jzLx