Remplacement d'une valeur de cellule par une autre

Bonjour,

j'aurais besoin d'un peu d'aide.

Je travail dans une charcuterie et nous faisons de la vente en ligne via un site de vente.

Celui ci nous permet de télécharger un fichier récapitulatif des commandes à traiter. (feuille 1 "Orders")

7orders.xlsx (270.24 Ko)

Donc je souhaiterais que lorsque je place ce fichier dans un fichier excel que j'ai fait pour trier mes commandes,

la colonne L "SKU producteur" soit remplacer par les valeurs correspondante en feuille 2 "référence".

Exemple:

1ère ligne Colonne L : Boeuf600-1

Remplacé par la valeur Colonne B correspondante du fichier Feuille 2 "Référence" correspondante

Donc pour la valeur Boeuf600-1 : Viande

Jusqu’à présent je le fait en formule, mais ce serai plus simple en vba pour éviter de coller les formules à chaque fois que j'importe ce fichier (plusieurs fois par jour), mais je coince un peu.

En espérant être claire dans mes explication

Merci d'avance

Bonjour,

La Macro :

' Etablir une référence à Microsoft Scripting Runtime
Option Explicit
Sub RemplacerSKU()
Dim d As New Dictionary
Dim r As Range
Dim t As Variant
Dim i As Long
   t = Worksheets("Référence").Range("A1").CurrentRegion.Offset(1).Value
   For i = LBound(t) To UBound(t) - 1: d(t(i, 1)) = t(i, 2): Next i
   Set r = Worksheets("Orders").Range("A1").CurrentRegion.Columns("L").Offset(1)
   t = r.Value
   For i = LBound(t) To UBound(t) - 1
    If d.Exists(t(i, 1)) Then t(i, 1) = d(t(i, 1))
   Next i
   r.Value = t
End Sub

Le fichier :

7orders.xlsm (293.65 Ko)

Bonjour,

La Macro :

' Etablir une référence à Microsoft Scripting Runtime
Option Explicit
Sub RemplacerSKU()
Dim d As New Dictionary
Dim r As Range
Dim t As Variant
Dim i As Long
   t = Worksheets("Référence").Range("A1").CurrentRegion.Offset(1).Value
   For i = LBound(t) To UBound(t) - 1: d(t(i, 1)) = t(i, 2): Next i
   Set r = Worksheets("Orders").Range("A1").CurrentRegion.Columns("L").Offset(1)
   t = r.Value
   For i = LBound(t) To UBound(t) - 1
    If d.Exists(t(i, 1)) Then t(i, 1) = d(t(i, 1))
   Next i
   r.Value = t
End Sub

Le fichier :

Orders.xlsm

Bonjour,

merci beaucoup pour l'aide qui fonctionne comme je le voulais.

Petite question,

comment faire si je veux l'incorporer dans un "Private Sub Worksheet_Activate()"

pour qu'il fonctionne automatiquement lorsque je vais sur une autre de mes feuille.

Merci

Petite question,

comment faire si je veux l'incorporer dans un "Private Sub Worksheet_Activate()"

pour qu'il fonctionne automatiquement lorsque je vais sur une autre de mes feuille.

Utiliser une procédure évènementielle, c'est une fausse bonne idée !

Le bouton sur la feuille 2 est bien plus sûr : la procédure ne sera exécuté que quand tu le décide.

Petite question,

comment faire si je veux l'incorporer dans un "Private Sub Worksheet_Activate()"

pour qu'il fonctionne automatiquement lorsque je vais sur une autre de mes feuille.

Utiliser une procédure évènementielle, c'est une fausse bonne idée !

Le bouton sur la feuille 2 est bien plus sûr : la procédure ne sera exécuté que quand tu le décide.

Je comprend bien que c'est plus sûr.

Mais j'utilise des tableaux dynamiques dans d'autre feuilles, et n'étant pas le seul a utiliser ce fichier au travail,

j'ai peur que cela ne produise des erreurs lorsque quelqu'un va importer le nouveau fichier orders vu que les tableaux ne s'actualise pas automatiquement.

Merci tout de même de cette aide précieuse

Bonjour,

ce matin j'essaie de copier ce code dans mon fichier

et à l’exécution de la macro j'ai un message d'erreur.

Je ne vois pas d'ou cela peut venir.

erreur

Bonjour

Comme c'est écrit au début : il faut établir une référence à Microsoft Scripting Runtime !

Dans le VBE / Outils / Références.

Bonjour

Comme c'est écrit au début : il faut établir une référence à Microsoft Scripting Runtime !

Dans le VBE / Outils / Références.

Désolé je n'avais pas du tout percuté.

Merci beaucoup de l'aide

Rechercher des sujets similaires à "remplacement valeur"