VBA | chercher et remplacer des données

Bonjour à toutes et tous,

J'ai un chouette petit projet qui ne devrait pas poser problèmes aux experts ici .. mais je me casse un peu la tête donc je voudrais faire appel à vous.
Je joins en annexe un fichier d'exemple pour aider à comprendre (et à m'expliquer).

1) je dois remplacer les données de la colonne J de ma feuille "export" par le code repris en colonne J de ma feuille "codes". En clair, lorsque le code est égal à Z43 dans "export" colonne I, je dois obtenir "1101" dans la colonne J de "export". Effectivement je cherche Z43 dans la feuilles "codes" et je renvoie "1101". Cela fonctionne avec le code que j'ai utilisé (un application.vlookup).

2) je dois faire la même chose mais maintenant en lisant le code repris en I pour remplacer par les heures reprises dans la colonne K de mon fichier "codes".. et pour une raison que je ne m'explique pas je tourne en rond.. je n'obtiens que #N/A :(

test

Je me rends bien compte que dans mon code dans le § 'remplacement des heures' je dois aller lire I au lieu de l'argument "d"... mais je n'y parviens pas :(

'remplacement du code
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 10), Cells(Rows.Count, 10).End(3))
c = Application.VLookup(c, Worksheets("codes").Range("$A$3:$J$233"), 10, 0)
Next

'remplacement des heures
Application.ScreenUpdating = False
For Each d In Range(Cells(1, 11), Cells(Rows.Count, 11).End(3))
d = Application.VLookup(d, Worksheets("codes").Range("$A$3:$K$233"), 11, 0)
Next

Merci d'avance pour votre aide.

FRed

8test.xlsm (51.92 Ko)

Bonjour Fredjo, bonjour le forum,

pas sûr d'avoir bien compris... J'aurais écrit :

Sub Macro1()
Dim OE As Worksheet
Dim OC As Worksheet
Dim DL As Integer
Dim I As Integer
Dim R As Range

Set OE = Worksheets("export")
Set OC = Worksheets("codes")
DL = OE.Cells(Application.Rows.Count, "J").End(xlUp).Row
For I = 1 To DL
    Set R = OC.Columns(1).Find(OE.Cells(I, "J").Value, , xlValues, xlWhole)
    If Not R Is Nothing Then
        OE.Cells(I, "J").Value = R.Offset(0, 9).Value
        OE.Cells(I, "K").Value = R.Offset(0, 10).Value
    End If
Next I
End Sub

Bonjour ThauThème (et déjà merci!),

Je pense que tu as vraiment bien compris.. et à lire le code c'est compréhensible.. Je teste et je reviens vers vous (toi).

Fred

C'est génial ! et en sus je comprends ce que je fais, ce qui est encore mieux.

Merci ThauThème !!!!!!

Rechercher des sujets similaires à "vba chercher remplacer donnees"