Comment remplacer des données dans un fichier de 35000 lignes???

meganspt

XLDnaute Nouveau
Bonjour

Comme le titre l'indique, j'ai un fichier de 35000 lignes et j'ai des cellules que je voudrais remplacer par d'autres

J'ai un fichier en Allemand mais à jours, je possède une partie du fichier en Français et je voudrais remplacer les cellules " allemande" par le Français

J'ai un fichier en pièce jointe, j'avais penser via une macro en fonction des références " HD " ( identiques sur les 2 fichiers ) pour automatiser le remplacement si possible

J'avais déjà essayer une macro extraction mais elle ne peux pas prendre plus de 1000 lignes et elle buge au dela.Sinon, je dois le faire par 1000 sur une base de 35000 lignes

Merci de votre aide
 

Pièces jointes

  • CONVALL.xlsx
    205 KB · Affichages: 61

pierrejean

XLDnaute Barbatruc
Re : Comment remplacer des données dans un fichier de 35000 lignes???

Bonjour meganspt

Et bienvenue sur XLD

Vois si cela te convient
 

Pièces jointes

  • CONVALL.xlsm
    219.4 KB · Affichages: 130
  • CONVALL.xlsm
    219.4 KB · Affichages: 131
  • CONVALL.xlsm
    219.4 KB · Affichages: 122

job75

XLDnaute Barbatruc
Re : Comment remplacer des données dans un fichier de 35000 lignes???

Bonjour meganspt, salut Pierre :)

Juste une remarque pour pierrejean.

J'avais constaté il y a longtemps que la méthode Find est bien plus lente que la méthode avec Match.

Cela a son importance sur un grand tableau.

Je te laisse vérifier.

A+
 

pierrejean

XLDnaute Barbatruc
Re : Comment remplacer des données dans un fichier de 35000 lignes???

Re

Salut Gerard

Oups !!! prés de 20 fois plus rapide (je ne suis pas prêt d'oublier)

d'ou la nouvelle macro

Code:
Option Base 1
Sub remplace()
Application.ScreenUpdating = False
Columns("O").Delete
Columns("M").Delete
Columns("G:K").Delete
Columns("E:F").Clear
tablo = Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
  x = Application.WorksheetFunction.Match(tablo(n, 1), Sheets("baseFrance").Columns("A"))
  If Not IsError(x) Then
    Range("E" & n + 1) = Sheets("baseFrance").Range("B" & x)
    Range("F" & n + 1) = Sheets("baseFrance").Range("C" & x)
  End If
Next
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • CONVALL.xlsm
    219.3 KB · Affichages: 79
  • CONVALL.xlsm
    219.3 KB · Affichages: 50
  • CONVALL.xlsm
    219.3 KB · Affichages: 67

job75

XLDnaute Barbatruc
Re : Comment remplacer des données dans un fichier de 35000 lignes???

Bonjour Pierre,

Aïe tu as oublié le zéro à la fin :)

Code:
x = Application.Match(tablo(n, 1), Sheets("baseFrance").Columns("A"), 0)
Edit : si l'on met Application.WorksheetFunction ça beugue, je ne sais pas pourquoi :confused:

A+
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Comment remplacer des données dans un fichier de 35000 lignes???

Re

On n'a pas fini de decouvrir les faceties de la fine equipe de Bill !!!!
Voici donc la dernière mouture de la macro
Avec mes remerciements à mon ami Gerard

Code:
Option Base 1
Sub remplace()
Application.ScreenUpdating = False
Columns("O").Delete
Columns("M").Delete
Columns("G:K").Delete
Columns("E:F").Clear
tablo = Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
  x = Application.Match(tablo(n, 1), Sheets("baseFrance").Columns("A"), 0)
  If Not IsError(x) Then
    Range("E" & n + 1) = Sheets("baseFrance").Range("B" & x)
    Range("F" & n + 1) = Sheets("baseFrance").Range("C" & x)
  End If
Next
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
26
Affichages
358

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83