Remplacer par....

3 réponses
Avatar
Denys
Bonjour =E0 tous,

Petit probl=E8me =E0 vous soumettre. Sur une feuille excel contenant plus
de 55,000 lignes, je dois remplacer dans la colonne B les noms de
produits en anglais par leur =E9quivalent en fran=E7ais. Il y a plus de 50
produits.

Alors, je me demandais si je pouvais mettre en colonne S les noms en
anglais et en colonne U l'=E9quivalent en fran=E7ais et avoir une macro
qui dirait simplement: pour chaque cellule entre B1:B55000, trouvez
l'=E9quivalent dans la colonne S (o=F9 les noms sont en anglais) et
remplacez par la cellule correspondant dans la colonne U o=F9 les noms
sont en fran=E7ais...

J'ai commenc=E9 avec ce qui suit, mais je faille quelque part:

Sub Fonds()
Set plg1 =3D ActiveSheet.Range("S2:S74")
Set plg2 =3D ActiveSheet.Range("U2:U74")
For Each C In Sheets("Sheet1").Range("B2:B55000")
If Not IsError(Application.Match(C, plg1, 0)) Then
Range("B2") =3D Application.Index(plg2, Application.Match(C, plg1, 0))
Else
Exit Sub
End If
Next
End Sub

Merci pour votre temps

Denys

3 réponses

Avatar
michel ou sam
Bonjour,
il y a au moins une anomalie à la ligne 6
où tu fais référence à B2 alors que l'on traite C
Michel

"Denys" a écrit dans le message de news:

Bonjour à tous,

Petit problème à vous soumettre. Sur une feuille excel contenant plus
de 55,000 lignes, je dois remplacer dans la colonne B les noms de
produits en anglais par leur équivalent en français. Il y a plus de 50
produits.

Alors, je me demandais si je pouvais mettre en colonne S les noms en
anglais et en colonne U l'équivalent en français et avoir une macro
qui dirait simplement: pour chaque cellule entre B1:B55000, trouvez
l'équivalent dans la colonne S (où les noms sont en anglais) et
remplacez par la cellule correspondant dans la colonne U où les noms
sont en français...

J'ai commencé avec ce qui suit, mais je faille quelque part:

Sub Fonds()
Set plg1 = ActiveSheet.Range("S2:S74")
Set plg2 = ActiveSheet.Range("U2:U74")
For Each C In Sheets("Sheet1").Range("B2:B55000")
If Not IsError(Application.Match(C, plg1, 0)) Then
Range("B2") = Application.Index(plg2, Application.Match(C, plg1, 0))
Else
Exit Sub
End If
Next
End Sub

Merci pour votre temps

Denys
Avatar
LSteph
Bonjour,

Sub Fonds()
Dim c As Range
With Application
.ScreenUpdating = False
For Each c In [B2:B55000].Cells
If Not IsError(.Match(c, [s2:s167], 0)) Then
c.Value = .Index([u2:u167], .Match(c, [s2:s167], 0))
End If
.StatusBar = "Execution de " & Format(c.Row, "00000") & "/55000"
Next
.ScreenUpdating = True
.StatusBar = False
End With
End Sub

'LSteph


On Jul 15, 3:06 pm, Denys wrote:
Bonjour à tous,

Petit problème à vous soumettre. Sur une feuille excel contenant plus
de 55,000 lignes, je dois remplacer dans la colonne B les noms de
produits en anglais par leur équivalent en français. Il y a plus de 5 0
produits.

Alors, je me demandais si je pouvais mettre en colonne S les noms en
anglais et en colonne U l'équivalent en français et avoir une macro
qui dirait simplement: pour chaque cellule entre B1:B55000, trouvez
l'équivalent dans la colonne S (où les noms sont en anglais) et
remplacez par la cellule correspondant dans la colonne U où les noms
sont en français...

J'ai commencé avec ce qui suit, mais je faille quelque part:

Sub Fonds()
Set plg1 = ActiveSheet.Range("S2:S74")
Set plg2 = ActiveSheet.Range("U2:U74")
For Each C In Sheets("Sheet1").Range("B2:B55000")
If Not IsError(Application.Match(C, plg1, 0)) Then
Range("B2") = Application.Index(plg2, Application.Match(C, plg1, 0))
Else
Exit Sub
End If
Next
End Sub

Merci pour votre temps

Denys
Avatar
Denys
Bonjour LSteph,

Wow !!! Merci infiniment, ça a fonctionné à la perfection !!!

Bonne journée

Denys