Macro remplacement de données par d'autres dans deux colonne

Bonjour

Je suis tout nouveau sur ce forum. Malgré deux formations sur VBA, j'avoue honnêtement que j'ai beaucoup de mal...

Voilà mon problème:

Je cherche sous excel à avoir une macro me permettant de remplacer automatiquement plusieurs données par d'autres. Exemple:

Remplacement dans les colonnes "I" et "J" ou "9" et "10" de LAITON par "LAIT"; remplacement dans les mêmes colonnes de TONDEUSE par TOND etc.

Le nombre de données varient d'un fichier à l'autre et commencent sur la ligne "9". Les lignes au dessus de doivent pas être concernées.

Merci de votre aide

Denis

Personne pour me donner un coup de main?

Bonsoir,

Avec la fonction rechercher/remplacer, on peut faire ça.

Pourquoi du VBA ?

Peut-être que quelque chose m'échappe ...

Bonne soirée

Bouben

Bonjour et merci de ta réponse Bouben...

Oui effectivement c'est bien la fonction Rechercher/Remplacer mais le nombre de mots à changer est très important. Il s'agit d'une liste de libellés que je dois abréger. D'où l'exemple de TOND. pour tondeuse, LAIT. pour laiton etc. etc. Je dois bien en avoir 500...

L'idée serait donc de disposer d'une macro "de base " que je pourrais compléter au fur et à mesure des abréviations que je trouve lors des réceptions de différents fichiers.

J'ai bien fait un enregistrement de macro, mais je crois que quelqu'un de compétent pourrait la simplifier. Ca donne quelque chose comme ça:

Sub Macro2()

Range("I9:J65536").Select

Selection.Replace What:="tondeuse", Replacement:="TOND.", LookAt:=xlPart _

, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="LAITON", Replacement:="LAIT.", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

End Sub

Merci d'avance

Bonjour

Une proposition

La liste des mots à remplacer en colonne A et en colonne B la liste de mot de remplacement

Sub Macro2()
Dim J As Long

  For J = 1 To Range("A1:A" & Rows.Count).End(xlUp).Row
    Range("J8:K65536").Replace What:=Range("A" & J), Replacement:=Range("B" & J), LookAt:=xlPart, _
                               SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  Next J
End Sub

Bonjour lepiratedescaraibes et Banzai,

lepiratedescaraibes a écrit :

Je dois bien en avoir 500...

Je me disais aussi, pourquoi cette question

Allez, je laisse la main, Banzai a répondu

Bouben

Merci à vous deux !!! Beaucoup plus malin en effet de se référer à deux colonnes contenant les noms et l'autre les noms à remplacer...

Je testerai ça au boulot lundi matin!

Merci encore et bon week-end à vous!

Denis

Re bonjour et encore merci à Banzai

J'ai enfin eu le temps de tester cette macro aujourd'hui... Mais elle le fonctionne pas...

Sub Macro2()

Dim J As Long

For J = 1 To Range("A1:A" & Rows.Count).End(xlUp).Row

Range("J8:K65536").Replace What:=Range("A" & J), Replacement:=Range("B" & J), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Next J

End Sub

Comme mes données sont sur la ligne 9, j'ai corrigé ainsi ;

For J = 1 To Range("A9:A" & Rows.Count).End(xlUp).Row

Range("J9:K65536").Replace What:=Range("A" & J), Replacement:=Range("B" & J), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

J'ai donc fait un essai en mettant dans la cellule A9 le mot tondeuse et dans la cellule B9 TOND.

J'ai fait de même sur la cellule A10 (LAITON) et dans la cellule B10

J'ai mis en colonne J et K de manière aléatoire les mots tondeuse et laiton.

Rien ne se passe lors de l'exécution de la macro. Je dois merder quelque part mais je ne vois pas où...

Merci d'avance

Je reviens vers vous...

En fait après avoir revu la macro sur mon fichier, ça marche mais seulement sur un mot remplacé:

colonne A/colonne B

tondeuse/TOND.

laiton/LAIT.

Dans la colonnes J, seul le mot tondeuse est remplacé par TOND. Comment faire pour continuer le rechercher remplacer sur la ligne 2,3,4 etc. ?

Sub FROM_FORUM_COLONNE_KJ()

Dim J As Long

For J = 1 To Range("A1:A" & Rows.Count).End(xlUp).Row

Range("J9:J65536").Replace What:=Range("A" & J), Replacement:=Range("B" & J), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Next J

End Sub

Désolé de ma méconnaissance...

Bonjour

I am verry verry sorry

Mea culpa, mea maxima culpa

Modifie la ligne correspondante

  For J = 1 To Range("A" & Rows.Count).End(xlUp).Row

C'est moi qui nul et toi qui t'excuse sourire...

Bravo! Ca marche impeccable ! Merci beaucoup !


C'est moi qui suis nul et toi qui t'excuse sourire...

Merci beaucoup ça marche impeccable !!!


C'est moi qui suis nul et toi qui t'excuse sourire...

Ca marche impeccable Banzai ! Merci beaucoup !

Rechercher des sujets similaires à "macro remplacement donnees deux colonne"