Microsoft 365 Remplacer une valeur saisie après recherche dans une liste sur un autre onglet

Beno17000

XLDnaute Nouveau
Bonsoir à tous,

On vient de me refiler une tableau excel avec macro pour que je l'améliore.
J'ai fait ce que l'on me demande mais j'aimerai me rendre un tache plus facile lors d'une prochaine mise à jour du fichier.

Je fais quelques recherches sur différents forum, mais je ne trouve pas un exemple similaire au mien.
J'ai essayé d'adapter ceux que j'ai trouver mais va ne fonctionne pas donc je suis revenu à ce qui marche.
Mais cela me convient pas car fastidieux et je pense qu'une macro adaptée pour rendre le travail plus facile.

Le fichier Excel ci-joint vous permettra de voir ce qui cloche chez moi (enfin pas tout ce qui cloche dans ma tête hein ;) )

C'est un rapport d'intervention pour le SAV.
La feuille est verrouillée pour éviter les modification de forme et de certaine cellule car c'est un document qualité qui doit-être identique entre tous.

Mon soucis :
Dans la colonne A en dessous de la cellule notée "Modèle", les techs saisissent un code produit (ex: 018010 ou Z018010)
Je souhaite qu'à la place du code apparaisse le nom du produit (ex : PRODUIT 1)
Le tout de manière automatique une fois la valeur validée.
Aujourd'hui j'ai dans la macro le code suivant qui fonctionne :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("RI IV").Unprotect Password:="TOTO"
    Dim KeyCells As Range
' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A34:A5000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
' Remplace les valeurs des cellules A34 à A5000
If Target.Count > 1 Then Exit Sub
If Intersect(Target, [A34:A5000]) Is Nothing Then Exit Sub
If Trim(Target) = "018010" Or Trim(Target) = "Z018010" Then Target = "PRODUIT 1"
If Trim(Target) = "018090" Or Trim(Target) = "Z018090" Then Target = "PRODUIT 2"
If Trim(Target) = "018110" Or Trim(Target) = "Z018110" Then Target = "PRODUIT 3"
If Trim(Target) = "018190" Or Trim(Target) = "Z018190" Then Target = "PRODUIT 4"
If Trim(Target) = "018210" Or Trim(Target) = "Z018210" Then Target = "PRODUIT 5"
If Trim(Target) = "019010" Or Trim(Target) = "Z019010" Then Target = "PRODUIT 6"
If Trim(Target) = "019110" Or Trim(Target) = "Z019110" Then Target = "PRODUIT 7"
If Trim(Target) = "074010" Or Trim(Target) = "Z074010" Then Target = "PRODUIT 8"
If Trim(Target) = "074510" Or Trim(Target) = "Z074510" Then Target = "PRODUIT 9"
If Trim(Target) = "076010" Or Trim(Target) = "Z076010" Then Target = "PRODUIT 10"
If Trim(Target) = "076530" Or Trim(Target) = "Z076530" Then Target = "PRODUIT 11"
If Trim(Target) = "076510" Or Trim(Target) = "Z076510" Then Target = "PRODUIT 12"
If Trim(Target) = "078010" Or Trim(Target) = "Z078010" Then Target = "PRODUIT 13"
If Trim(Target) = "078510" Or Trim(Target) = "Z078510" Then Target = "PRODUIT 14"
End If
Worksheets("RI IV").Protect Password:="TOTO"
End Sub

Or la liste de produits change de temps en temps.
J'aimerai donc que la macro réalise les actions suivantes :
Saisie par le tech de la réf,
La macro regarde dans l'onglet Produits si la référence est présente :
Si oui = la macro remplace par la valeur associée
Si non = aucune modification de la référence

Le tableau peut avoir son nombre de lignes augmenter à partir de la ligne 34.
La première ligne contenant modèle si situe en dessous, donc les références de la cellule de départ peuvent varier.
Le nombre de lignes concernées peut être proche des 5000.
Il faut appliquer cette macro au deux "sous tableaux" dessinés.
Entre deux références saisies il peut y avoir des cellules vides et qui devront le rester

Je pense ne rien avoir oublié, ah si le plus important :

Je vous remercie :) du temps que vous allez passer à m'aider car je patauge dans la mélasse là.
 

Beno17000

XLDnaute Nouveau
Merci Roblochon.

C'est ce que je cherchais.

Je me suis mal exprimé pour ma recherche sur le Forum. Tu as raison il y a plein de sujet qui traitent des fonctions recherche et remplace.
Je n'arrivais pas à adapter celles que j'ai trouvées à mon cas.
Je suis de très loin un expert en VBA donc je fais avec mes modeste compétences.
Bref mea culpa

Pour revenir sur la macro qui tu as faite, j'ai testé et tout marche parfaitement.
J'ai été imprécis sur un point, il faudrait que lorsqu'un tech saisisse une réf, si cette dernière n'est pas existante dans la feuille référence, que le texte saisi reste dans la cellule.
On remplace que si on trouve une correspondance, sinon on laisse ce qui a été saisi.

Merci encore une fois pour le temps que tu as passé :)

PS : je remet le fichier excel avec un meilleur exemple des références que je peux avoir.
 
Haut Bas