Remplacement complexe de valeur
Bonjour à tous,
Dans le cadre de mon travail je suis amené à gérer une base de données articles.
J'ai fait une extraction de cette base représentant 70 000 articles environ sous format CSV point virgule.
Je dois mettre à jour les informations d'une colonne grâce à un autre tableau ou figure les nouvelles informations.
Le tableau 1 se présente :
Colonne A = ref article interne
Colonne B = ref fournisseur
Le tableau 2 se présente :
Colonne A ref article interne
Colonne B ref article mise à jour
Dans le tableau 2, il ne figure pas toutes les références interne du tableau 1 et de plus, elles ne sont pas dans le même ordre.
Donc, comment mettre à jour la colonne B de mon tableau 1 grâce à mon tableau 2 en fonction de ma référence interne ?
Merci beaucoup de votre aide et bon courage pour comprendre car je ne suis pas sur d'être clair
Bonjour,
Une piste à adapter avec les commentaires dans le code. les références sont sensées être unique (se trouver une fois et une seule fois dans chaque colonne A des deux feuilles) :
Sub Test()
Dim PlgInterne As Range
Dim PlgMAJ As Range
Dim CelInterne As Range
Dim CelMAJ As Range
'les plages se trouvent sur les feuilles "Feuil1" (devant être mise à jour) et "Feuil2" (contenant les mises à jour)
With Worksheets("Feuil1"): Set PlgInterne = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
With Worksheets("Feuil2"): Set PlgMAJ = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'parcours la colonne A du tableau 1...
For Each CelInterne In PlgInterne
'et recherche la référence dans la colonne A du tableau 2
Set CelMAJ = PlgMAJ.Find(CelInterne.Value, , xlValues, xlWhole)
'si trouvée, récupère la valeur située en colonne B du tableau 2
'pour la mettre dans la colonne B du tavbleau 1
If Not CelMAJ Is Nothing Then
CelInterne.Offset(, 1).Value = CelMAJ.Offset(, 1).Value
End If
Next CelInterne
End SubBonjour,
Ou dois-je insérer le code ?
Merci par avance.
Bonne journée.
Bonjour,
Tout d'abords, tu fais une copie de ton fichier afin de ne pas corrompre l'original si ce n'est pas tout à fait ce que tu désires. Dans ton classeur copié, tu appuis sur la combinaison de touches Alt+F11 là, la fenêtre qui s'ouvre est la fenêtre du VBE, l'éditeur de code de Visual Basic ensuite, menu "Insertion" puis "Module" (pas "Module de classe") dans la partie droite qui vient de s'afficher, tu colles tout le code que je t'ai donné, tu places le curseur n'importe où dans ce code et tu appuis sur la touche F5 ou tu cliques sur le petit triangle vert de lecture dans la barre d'outils et tu retournes dans Excel pour voir le résultat et si c'est ce que tu désire, tu peux faire la même procédure dans ton classeur original ou garder la copie comme original.