Autres remplacement en VBA

eric57

XLDnaute Occasionnel
Bonjour

je dois faire un remplacement dans une colonne ( colonne A) des 3 derniers caractères. Mais ces caractères existent aussi dans la chaîne, et du coup je n'arriva pas a mes fins.

exemple :

Constructa - CG3A01U5 -
Constructa - CG3A02J5 -
Constructa - CG3A02V9 -
Constructa - CG4A04J5 -
Constructa - CG4A04V9 -
Constructa - CG4A50J5 -

Doit être remplacé par

Constructa - CG3A01U5|xx -
Constructa - CG3A02J5|xx -
Constructa - CG3A02V9|xx -
Constructa - CG4A04J5|xx -
Constructa - CG4A04V9|xx -
Constructa - CG4A50J5|xx -

Merci de votre aide. Je sèche malgré mes recherches
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Eric,
Au plua simple, un essai en PJ avec :
VB:
Sub Ajoute()
    Dim L%, X$
    Application.ScreenUpdating = False
    For L = 1 To Range("A65500").End(xlUp).Row
        X = Cells(L, "A")
        X = Mid(X, 1, Len(X) - 3) & "|xx -"
        Cells(L, "A") = X
    Next L
End Sub
On prend une chaine moins 3 caractères puis on rajoute la terminaison.
Si la liste est vraiment très longue, il y a plus rapide.
 

Pièces jointes

  • Eric.xlsm
    15.1 KB · Affichages: 1

eric57

XLDnaute Occasionnel
Bonjour Eric,
Au plua simple, un essai en PJ avec :
VB:
Sub Ajoute()
    Dim L%, X$
    Application.ScreenUpdating = False
    For L = 1 To Range("A65500").End(xlUp).Row
        X = Cells(L, "A")
        X = Mid(X, 1, Len(X) - 3) & "|xx -"
        Cells(L, "A") = X
    Next L
End Sub
On prend une chaine moins 3 caractères puis on rajoute la terminaison.
Si la liste est vraiment très longue, il y a plus rapide.
Merci pour aide, oui effectivement la liste peut atteindre 15 ou 20.000 lignes gloupp
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
En PJ un essai en passant par un array :
VB:
Sub Ajoute()
    Dim T, i%, T0
    Application.ScreenUpdating = False
    T = Range("A1:A" & Range("A65500").End(xlUp).Row) ' Adapter colonne, ici A.
    For i = 1 To UBound(T)
        T(i, 1) = Mid(T(i, 1), 1, Len(T(i, 1)) - 3) & "|xx -"
    Next i
    Range("A1").Resize(UBound(T), 1).Value = Application.Transpose(T)
End Sub
Sur mon PC 30 000 lignes traitées en 0.2s.
Adapter le N° de colonne en fonction de votre besoin.
 

Pièces jointes

  • Eric2.xlsm
    16.2 KB · Affichages: 3

Discussions similaires

Réponses
12
Affichages
529

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg