remplacer une référence de produit par son nom

C

corbin

Guest
bonjour,

J'ai deux tableaux :

le premier tableau avec des références de produit (une même référence peut être répétée sur plusieurs lignes)

le second tableau avec la référence du produit dans une colonne et le nom correspondant du produit dans l'autre colonne.

Comment puis-je faire avec une macro (6000 lignes et 300 références !) pour remplacer les références du premier tableau par le nom.

j'ai essayé avec une macro "auto-enregistrée" avec rechercher/remplacer, mais j'achoppe au moment du second "coller" à utiliser dans "remplacer par".
 
W

William

Guest
Bonjour Corbin,

Il me semble qu'il faudrait partir sur un petit If... Then de type :

If Range("A1").Value = "32165" Then
"nom correspondant" = Range ("A1").Value

'où 32165 est la réf d'un produit

Et il faudrait recommencer avec les autres cellules....

Sur ce, on complique légèrement et :

Dim cellule As Range

Range("A1").Activate
For Each cellule In Worksheets("zaza").Range("A1:A63536")
If cellule = 32165 Then
"nom correspondant" = Cellule.Value
Next


Bon, là bien sûr, zaza c'est le nom de la feuille...

Mais cela ne te suffira pas, car tu n'as sûrement pas envie de te taper la saisie de tous les nom correspondants, ni de toutes les réfénces....

Peut-être une piste :


Si tes réf. sont enregistrées en "A" et tes noms en "B"


Dim cellule As Range

Sheets("toto").Select 'Il s'agit de la feuilles où sont les noms et les ref.

ref = Selection.Value
Selection.Offset(0, 1)
nomCORRES = Selection.Value

Sheets("zaza").Activate
Range("A1").Activate
For Each cellule In Worksheets("zaza").Range("A1:A63536")
If cellule = ref Then
Cellule.Value = nomCORRES
Next
Sheets("toto").Activate

Il ne s'agirait alors plus que de sélectionner chaque cellule "A" à tour de rôle, puis de lancer la macro....

Mais bon, on doit pouvoir automatiser cela (300 ref, quand même !!)

Il faudrait prévoir une boucle, mais je n'ai hélas aucune idée de la façon de procéder....

Essaie déjà cette macro, et dis moi si elle fonctionne (je ne l'ai pas testée..)

A Bientôt,

William
 
W

William

Guest
OOOPS, Sorry

Une petite erreur (peut-être d'autres, qui sait)

Dans la première macro, il fallait lire :



Dim cellule As Range

Range("A1").Activate
For Each cellule In Worksheets("zaza").Range("A1:A63536")
If cellule = 32165 Then
Cellule.Value = "nom correspondant"
Next

Bonne soirée,

William
 
J

Jacques

Guest
Bonsoir Charles,

Tu te compliques bien les choses.

Supposons que dans ton premier tableau, tes références sont en colonne A, tu insères une nouvelle colonne B.
Dans la premier cellule de cette colonne tu mets la formule
=RECHERCHEV(A1;Feuil2!A:B;2;0)
[Dans la feuille nommée Feuil2, la colonne A contient les différentes références (si possible triées par ordre croissant) et la colonne B les noms correspondants.]
Ensuite tu "tires" la formule de la case B1 dans toutes les cellules de la colonne B et tu obtiendras le nom dans ce tableau là.
Si ton objectif est d'avoir le nom à la place de la colonne référence dans ton premier tableau, il te suffit de copier la colonne B, puis sur elle-même de faire un collage spécial (valeur) et enfin de supprimer la première colonne.

Voilà comment je pense résoudre ton problème sans mettre en oeuvre VBA.

Bonne soirée
 
C

corbin

Guest
Solution élégante et lumineuse, Jacques,

voilà qui me permet d'éviter un travail fastidieux, d'avoir à me plonger dans VBA et qui me fait (re?)découvrir les fonctions.

merci vraiment beaucoup et bonne ... nuit !

charles
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 313
Membres
102 860
dernier inscrit
fredo67