Macro permettant remplacer une partie d'une chaine de caractere

Bonjour,

J'ai essayé de chercher sur internet une solution qui se rapproche au mieux de mon problème mais après plusieurs essais je n'obtiens pas forcément les résultats voulus car se sont des solutions fragmentés.

Je vous explique mon problème :

De base, j'ai toujours une cellule de référence avec par exemple à l'intérieur : AT001A11 (AT001 est le numéro de l'objet) et les 3 derniers caractères ne sont pas importants. Le contenu de la cellule peut varier, en effet au lieu de AT001A11 je peut par exemple avoir VP001A11 ou VP060A11 ou AT145A11 etc ...

J'aimerai faire une petite macro qui viens remplacer les 5 premiers caractères de la colonne I par les 5 premiers caractères de la cellule référente (voir cellule D1 de la feuil1). Les 3 derniers chiffres de la colonne I ne doit pas être modifié par ma macro.

J'aimerai obtenir une solution qui se rapproche de la feuill2. A l'intérieur j'ai exposé 2 exemple sur la feuil1 pour mieux expliquer mon problème, un premier cas avec en cellule référente 'AT001A11' et un deuxième exemple avec 'VP001A11'

Pouvez-vous m'aider svp ?

27classeur1.xlsx (12.35 Ko)

Bonjour,

Ce que tu veux faire, c'est l'équivalent d'un Rechercher-Remplacer ? Pourquoi faire une macro, alors ?

Les autres chiffres dans ton exemple (80,00 et 50) n'ont pas de lien avec la demande ?

Le volume des données sera environ celui de ton exemple, ou alors tu vas avoir un nombre de cellules à modifier beaucoup plus important ?

Bonjour

Pour remplacer les 5 premiers caractères de la colonne I par les 5 premiers de la cellule C1:

Code Module

Sub Change()
Dim Cel As Range
For Each Cel In Range("I1", Range("I1").End(xlDown))
Cel.Value = Replace(Cel, Left(Cel, 5), Left(Range("C1"), 5))
Next Cel
End Sub

et si tu veux les 5 caractères en vert:

Sub Change()
Dim Cel As Range
For Each Cel In Range("I1", Range("I1").End(xlDown))
With Cel
.Value = Replace(Cel, Left(Cel, 5), Left(Range("C1"), 5))
.Characters(Start:=1, Length:=5).Font.ColorIndex = 4
End With
Next Cel
End Sub

Cordialement

25classeur1.xlsm (20.62 Ko)

Bonjour,

@U.Milité

Re,

C'est l'équivalent d'un Rechercher-Remplacer en effet. Les chiffres 80 et 50 n'ont pas de lien.

Je peuxt utiliser la fonction CTRL + F mais je préfère utiliser une macro qui remplace instantanément les 5 caractères en question.

Le nombre de série sur la colonne I est beaucoup plus important que mon exemple environ (1700 lignes ~ 2000 lignes)

@Amadéus

Re,

Merci. J'ai testé ton bout de programme, mais cela me crée un bug quand je lance la macro. J'ai le curseur de ma souris qui fait des battements (en exécution) puis mon fichier se ferme brutalement avec comme message d'erreur : Excel a cessé de fonctionner.

Bonjour,

Finalement j'ai réussi à trouver le problème il fallait rajouter cette ligne d'instruction :

Sheets("Feuil3").Select

Merci beaucoup !

Bonjour,

Finalement j'ai réussi à trouver le problème il fallait rajouter cette ligne d'instruction :

Sheets("Feuil3").Select

Merci beaucoup !

Bonjour,

Cette ligne résoud sans doute ton problème mais c'est une mauvaise instruction !

Elle est parasite et allonge le temps d'exécution. Mieux vaut qualifier tes Range... par Sheets("Feuil3").Range... et si tu qualifies toujours pas la référence à l'objet parent, tu n'auras jamais à chercher où est le problème...

Cordialement.

Rechercher des sujets similaires à "macro permettant remplacer partie chaine caractere"