optimisation code VBA

  • Initiateur de la discussion Initiateur de la discussion Bdieng
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Bdieng

Guest
Bonjour à tous,
Pouvez-vous m’aider à optimiser mon code ci-dessous?
L’idée c’est que je veux ramener sur mon onglet « Summary_Proj. Num » les valeurs qui sont dans un autre onglet « Sales Orders_Proj. Num. » en fonction des valeurs qui sont sur ma 1ère colonne. J’ai utilisé le vlookup, mais le temps d’exécution est trop long.

i = 2
With Worksheets("Summary_Proj. Num.")
While Cells(i, 1) <> ""
Cells(i, 2) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 2, False)
Cells(i, 3) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 3, False)
Cells(i, 4) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 7, False)
Cells(i, 5) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 6, False)
Cells(i, 6) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 9, False)
Cells(i, 7) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 8, False)
Cells(i, 8) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 11, False)
Cells(i, 9) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 10, False)
Cells(i, 10) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 13, False)
Cells(i, 11) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 12, False)
Cells(i, 12) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 15, False)
Cells(i, 13) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 14, False)
Cells(i, 14) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 17, False)
Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 16, False)
Cells(i, 16) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 19, False)
Cells(i, 17) = WorksheetFunction.VLookup(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 18, False)
i = i + 1
Wend
End With
'
merci d'avance
 
Re : optimisation code VBA

Bonjour le fil, bonjour le forum,

peut-être comme ça :

Code:
Sub Macro2()
Dim pl As Range
Dim i As Long
 
With Sheets("Sales Orders_Proj. Num.")
    Set pl = .Range("C6:C" & Range("C65536").End(xlUp).Row)
End With
 
With Worksheets("Summary_Proj. Num.")
    For i = 2 To .Range("A65536").End(xlUp).Row
        Cells(i, 2) = WorksheetFunction.VLookup(Cells(i, 1), pl, 2, False)
        Cells(i, 3) = WorksheetFunction.VLookup(Cells(i, 1), pl, 3, False)
        Cells(i, 4) = WorksheetFunction.VLookup(Cells(i, 1), pl, 7, False)
        Cells(i, 5) = WorksheetFunction.VLookup(Cells(i, 1), pl, 6, False)
        Cells(i, 6) = WorksheetFunction.VLookup(Cells(i, 1), pl, 9, False)
        Cells(i, 7) = WorksheetFunction.VLookup(Cells(i, 1), pl, 8, False)
        Cells(i, 8) = WorksheetFunction.VLookup(Cells(i, 1), pl, 11, False)
        Cells(i, 9) = WorksheetFunction.VLookup(Cells(i, 1), pl, 10, False)
        Cells(i, 10) = WorksheetFunction.VLookup(Cells(i, 1), pl, 13, False)
        Cells(i, 11) = WorksheetFunction.VLookup(Cells(i, 1), pl, 12, False)
        Cells(i, 12) = WorksheetFunction.VLookup(Cells(i, 1), pl, 15, False)
        Cells(i, 13) = WorksheetFunction.VLookup(Cells(i, 1), pl, 14, False)
        Cells(i, 14) = WorksheetFunction.VLookup(Cells(i, 1), pl, 17, False)
        Cells(i, 15) = WorksheetFunction.VLookup(Cells(i, 1), pl, 16, False)
        Cells(i, 16) = WorksheetFunction.VLookup(Cells(i, 1), pl, 19, False)
        Cells(i, 17) = WorksheetFunction.VLookup(Cells(i, 1), pl, 18, False)
    Next i
End With
End Sub
 
Re : optimisation code VBA

Code:
ligne =WorksheetFunction.equiv(Cells(i, 1), Sheets("Sales Orders_Proj. Num.").Range("$C$6:$AM$65000"), 0)
cells(i,2)=Sheets("Sales Orders_Proj. Num.").cells(i+ligne,8)
.....

un truc dans ce genre la
pas tester et il faut peut etre le nom de "equiv" en anglais
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
917
Réponses
2
Affichages
528
Réponses
4
Affichages
738
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
458
Retour