VLOOK UP en VBA ???

YannLC

XLDnaute Junior
Hi All,

Ma vlook up est un peu lourd sur mon fichier de 35 000 ligne comment optimiser ou changer ma fonction pour que ca aille plus vite ?

pour l instant j ai une macro qui :

* copie toute la colonne code client ( code 3 3 2 du type AXE_BEL_IT ) dans une nouvelle colonne

* qui "replace" _ par " " pour obtenir AXE BEL IT

* je crée une autre colonne ou je tire un vlookup sur les 65 000 lignes d excel ( ma base de mapping et du type AXE BEL IT qui correspond en francais a AXELIUM BELLIA ITALIA nom en francais )

* pour finir ca crée une troisieme colonnes ou je copie colle les resultats de la vlookup

durée de la manip en automatique ...... 5 min et quelque, montre en main !!! lollll regardez ma belle macro !!! les bons en VBA vont sourire :

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 20/07/2006 by AZF
'
' Keyboard Shortcut: Ctrl+a
'
Range("B2").Select
Sheets("INPUT Ctrl V Base SWAP").Select
Cells.Select
Selection.Copy
Sheets("OUTPUT RESULT").Select
Range("A1").Select
ActiveSheet.Paste
Columns("T:T").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Columns("S:S").Select
Selection.Copy
Columns("T:T").Select
ActiveSheet.Paste
Selection.Replace What:="_", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("U:U").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("U1").Select
ActiveCell.FormulaR1C1 = "NAME 1"
Range("U2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'INPUT Ctrl V Base BCC'!RC[-19]:R[49998]C[-18],2,FALSE)"
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'INPUT Ctrl V Base BCC'!R2C[-19]:R50000C[-18],2,FALSE)"
Range("U2").Select
Selection.Copy
Range("U3").Select
ActiveSheet.Paste
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Columns("V:V").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Columns("U:U").Select
Selection.Copy
Range("V1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("V1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "NAME 2"
Range("V2").Select
Columns("S:S").ColumnWidth = 14.86
Columns("T:T").ColumnWidth = 17.86
Columns("T:T").ColumnWidth = 15.57
Columns("U:U").ColumnWidth = 40.71
Columns("U:U").ColumnWidth = 57.71
Columns("V:V").ColumnWidth = 30.57
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 12
Columns("V:V").ColumnWidth = 63.14
End Sub

il y a surement une tonne de chose inutiles dans cette macro pour l instant elle me sert mais c est bien trop long !!!

Si vous avez des idées !!!

Merci d avance !!!
 

nat54

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

YannLC à dit:
Hi All,

Ma vlook up est un peu lourd sur mon fichier de 35 000 ligne comment optimiser ou changer ma fonction pour que ca aille plus vite ?



* je crée une autre colonne ou je tire un vlookup sur les 65 000 lignes
pourquoi étirer sur toute la feuille excel, et non pas étirer juste là où il y a des données ?
 

YannLC

XLDnaute Junior
Re : VLOOK UP en VBA ???

hi Nath,

parce le fichier traité peux aller jusqu a 65000 lignes !!! j ai fais des test en diminuant "le tirage de vlookup" jusqu a 30000 lignes mais c est lourd de la meme facon !!!

Ce fichier est une base de traitement, je dois meme faire ca pour plusieur colonne donc c est vraiment tres lourd !!!

See u
 

nat54

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Oui tu dis bien il PEUT aller jusque 65000, donc tu pouvais faire un test ; voir s'il y a une donnée dans ce cas étirer sinon stopper là

Mais apparemment ca n'allège pas le temps...à ce que tu dis
 

porcinet82

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Salut Yann, re nat,

J'ai essayer de modifier un peu ton code afin de le rendre plus court et peut etre plus rapide, mais n'ayant pas le fichier, je ne peut pas tester. Cependant, une remarque, la ligne de code dans le With plante chez moi, (et pas a cause du With, ca fontionnait meme a l'origine).

PHP:
Sub Macro1()
'Keyboard Shortcut: Ctrl+a
Application.ScreenUpdating = False
Sheets("OUTPUT RESULT").UsedRange.Clear
Application.Goto Sheets("INPUT Ctrl V Base SWAP").Range("A1")
Sheets("INPUT Ctrl V Base SWAP").UsedRange.Copy
Application.Goto Sheets("OUTPUT RESULT").Range("A1")
ActiveSheet.Paste
Columns("T:T").Insert Shift:=xlToRight
Columns("T:T").Value = Columns("S:S").Value
Range("T1:T" & Range("T65536").End(xlUp).Row).Select
'la ligne de code suivante plante
With Selection
    .Replace What:="_", Replacement:=" ", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End With
Columns("U:U").Insert Shift:=xlToRight
Range("U1").FormulaR1C1 = "NAME 1"
Range("U2").FormulaR1C1 = "=VLOOKUP(RC[-1],'INPUT Ctrl V Base BCC'!RC[-19]:R[49998]C[-18],2,FALSE)"
Range("U2").Copy
Range("U3:U" & Range("T65536").End(xlUp).Row).Select
ActiveSheet.Paste
Columns("V:V").Insert Shift:=xlToRight
Columns("U:U").Copy
Range("V1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
Range("V1").FormulaR1C1 = "NAME 2"
Columns("S:S").ColumnWidth = 14.86
Columns("T:T").ColumnWidth = 17.86
Columns("T:T").ColumnWidth = 15.57
Columns("U:U").ColumnWidth = 40.71
Columns("U:U").ColumnWidth = 57.71
Columns("V:V").ColumnWidth = 30.57
Columns("V:V").ColumnWidth = 63.14
Application.ScreenUpdating = True
End Sub

Tiens nous au courant,

@+
 

YannLC

XLDnaute Junior
Re : VLOOK UP en VBA ???

hi,

Comme souvent il y a un premier bon lancement de macro, mais apres ca se gatte.

La macro que tu m as donné fonctionne donc du premier coup, meme avec l'ajout d'un racourci clavier.

Mais apres pour la relancer si je change le fichier a traiter dans le sheet "INPUT Ctrl V BASE SWAP" ou si je veux relancer la macro avec le meme fichier en ayant tout effacé (ce qu elle vient de faire dans le fichier OUTPUT) cela ne remarche plus.
A plus
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Salut Yann,

Heu... Est-ce que tu pourrais faire un effort lors de la rédaction parce que le dernier post, je ne sais pas en quelle langue c'est ecrit, mais moi je capte rien du tout. Pour tout te dire, j'ai décroché ici :
la macro que tu m as qui marche cependant du premeir coup une fois que je viens de coller celle ci a la suite de mon classeur avec une autre raccourci clavier !!!

@+
 

porcinet82

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Alors là, je ne sais pas trop quoi te dire de plus. Sans le fichier, ca risque d'etre difficile de te filer un coup de main.
Est-ce que tu pourrais mettre un exemple de ton fichier avec le cas ou ca fonctionne, et le cas ou ca ne fonctionne pas. Avant que tu me dises que ton fichier est trop gros, mets seulement 10 lignes, ca suffira amplement.

@+
 

YannLC

XLDnaute Junior
Re : VLOOK UP en VBA ???

Un fichier avec les colonnes decalés mais ca bug dans tout les sens, tu as la base now !!! je regarde de mon coté mais moi j en suis a comprendre le code et non pas a coder lolllll !!! petit a petit je progresse !!!
 

Pièces jointes

  • XLD WORK 2006 V2 .xls
    34.5 KB · Affichages: 49

porcinet82

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Yann, je viens de jeter un oeil a ton fichier, pas sur d'avoir tout saisis, donc je fais un essais, mais sans grande conviction.
Si ce n'est pas ca, mets un fichier avec les colonnes au bon endroit. Et la ligne de code permettant de remplacer les _ par des " " plante toujours chez moi, j'ai jamais réussit a les faire fonctionner ces saloperies.

Tiens moi au courant,

@+
 

Pièces jointes

  • XLD WORK 2006 V3.xls
    34 KB · Affichages: 59

ChTi160

XLDnaute Barbatruc
Re : VLOOK UP en VBA ???

Salut YannLC
bonsoir Romain
bonsoir le fil

voila ce que j'ai modifié dans la macro et cela marche (apparemment lol)

With Selection
.Replace What:="_", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
Columns("U:U").Insert Shift:=xlToRight
Range("U1").FormulaR1C1 = "NAME 1"
Range("U2").FormulaR1C1 = "=VLOOKUP(RC[-1],'INPUT Ctrl V Base BCC'!R2C[-20]:R49998C[-19],2,FALSE)"
Range("U2").Copy

enfin il faut tester
car je pense que tout cela peut être simplifié lol
bonne fin de Soirée
 

YannLC

XLDnaute Junior
Re : VLOOK UP en VBA ???

hi merci pour tout !!!

J ai mis un petite modif avec une "MsgBox yes no" car un lancement par erreur me coute 2 minutes sur mon temps de travail, lollll, car le PC rame lors de l execution

Voici ma macro apres modif :

Sub Macro1()
'Keyboard Shortcut: Ctrl+a
reponse = MsgBox("Voulez vous vraiment lancer la macro ?", vbYesNo + vbQuestion, "MA MACRO")
If reponse = 7 Then Exit Sub
Application.ScreenUpdating = False
Sheets("OUTPUT RESULT").UsedRange.Clear
Application.Goto Sheets("INPUT Ctrl V Base SWAP").Range("A1")
Sheets("INPUT Ctrl V Base SWAP").UsedRange.Copy
Application.Goto Sheets("OUTPUT RESULT").Range("A1")
ActiveSheet.Paste
Columns("T:T").Insert Shift:=xlToRight
Columns("T:T").Value = Columns("S:S").Value
Range("T1:T" & Range("T65536").End(xlUp).Row).Select
With Selection
.Replace What:="_", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
Columns("U:U").Insert Shift:=xlToRight
Range("U1").FormulaR1C1 = "NAME 1"
Range("U2").FormulaR1C1 = "=VLOOKUP(RC[-1],'INPUT Ctrl V Base BCC'!R2C[-20]:R49998C[-19],2,FALSE)"
Range("U2").Copy
Range("U3:U" & Range("T65536").End(xlUp).Row).Select
ActiveSheet.Paste
Columns("V:V").Insert Shift:=xlToRight
Range("U2:U" & Range("T65536").End(xlUp).Row).Copy
Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
Range("V1").FormulaR1C1 = "NAME 2"
Columns("S:S").ColumnWidth = 14.86
Columns("T:T").ColumnWidth = 15.57
Columns("U:U").ColumnWidth = 57.71
Columns("V:V").ColumnWidth = 63.14
Application.ScreenUpdating = True
End Sub

Cheers all
 

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS