XL 2013 VBA VLOOKUP

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 !

Kidcarotte

XLDnaute Junior
Hello la compagnie

J'essaie de faire une fonction VLookUp mais cela ne fonctionne pas comme je le souhaiterai (comme toujours)

Le code "s'execute" sans message d'erreur, mais il n'y a aucun resultat. La colonne J reste vide.
Si vous avez des suggestions.
Voici le code en question

</>
Sub Create_Report_Jess()
On Error Resume Next
Set S1 = Sheets("Ship Plan")
Set S2 = Sheets("Report")
Set S3 = Sheets("Button")
Dim Dept_Row As Long
Dim Dept_Clm As Long

Table1 = S2.Range("I2", S2.Range("I2").End(xlDown)).Select
Table2 = S3.Range("A10:B40")
Dept_Row = S2.Range("J2").Row
Dept_Clm = S2.Range("J2").Column
For Each C1 In Table1
S2.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(C1, Table2, 2, False)
Dept_Row = Dept_Row + 1

Next C1

End Sub
 
Bonjour Kidcarotte, xUpsilon
A défaut de fichier exemple, c'est difficile de bien comprendre.
Avec ce code, la colonne J se remplit, mais aucune idée de ce que vous attendez:
VB:
Sub Create_Report_Jess()
On Error Resume Next
Set S1 = Sheets("Ship Plan")
Set S2 = Sheets("Report")
Set S3 = Sheets("Button")
Dim Dept_Row As Long
Dim Dept_Clm As Long

Taille = Range("I2").End(xlDown)
Table1 = S2.Range("I2", "I" & Taille)
Table2 = S3.Range("A10:B40")
Dept_Row = S2.Range("J2").Row
Dept_Clm = S2.Range("J2").Column
For Each C1 In Table1
S2.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(C1, Table2, 2, False)
Dept_Row = Dept_Row + 1

Next C1

End Sub
 
Merci j'ai reussi a resoudre mon Vlookup probleme.

En revanche il y a quelque chose que je ne comprends pas.

A chaque fois que je clique sur le bouton report, le report finis a la ligne 100000.
Avez vous une idee pourquoi cela arrive ?
Par consequent il est dit que mon ordinateur n'a pas assez de stockage car mon Vlookup s'applique jusqu'a la fonction 100000
 
Re,
On peut supprimer le Vlookup et le remplacer par un IndexEquiv:
VB:
Sub Create_Report_Jess()
Set S1 = Sheets("Ship Plan")
Set S2 = Sheets("Report")
Set S3 = Sheets("Button")
Dim Cid As String
Dim Dept_Row As Long
Dim Dept_Clm As Long

S1.Range("B:I").Copy Destination:=S2.Range("A:H")
S1.Range("K:N").Copy Destination:=S2.Range("I:M")
S1.Range("P:R").Copy Destination:=S2.Range("N:Q")
S1.Range("T:Y").Copy Destination:=S2.Range("R:W")
S1.Range("AA:AA").Copy Destination:=S2.Range("X:X")
S1.Range("AC:BG").Copy Destination:=S2.Range("Z:BC")
S1.Range("BI:BP").Copy Destination:=S2.Range("BD:BK")

S2.Range("B2:C60000") = Format(Now(), "dd.mm.yyyy")
S2.Range("F:F").NumberFormat = "00000"
S2.Range("H:H").NumberFormat = "000"

Taille = Range("I:I").End(xlDown).Row
Table1 = S2.Range("I2", "I" & Taille)
table2 = S3.Range("A10:A40")
table3 = S3.Range("B10:B40")
Dept_Row = S2.Range("J2").Row
Dept_Clm = S2.Range("J2").Column
For Each C1 In Table1
S2.Cells(Dept_Row, Dept_Clm) = Application.Index(table3, Application.Match(C1, table2, 0))
Dept_Row = Dept_Row + 1

Next C1

End Sub
Quand aux 100000, il faut voir.
C'est bizarre puisque Taille=33, donc le for next va de 2 à 33.

Question : comment avez vous résolu votre problème,par simple curiosité puisque ça marche chez moi ?
 
Bonsoir,
J'ai utilise la formule range.formula pour la VLookup, le probleme etant que le Vlookup s'applique au 100000 lignes vides ce qui genere un message d'erreur car mon ordinateur n'a pas la capacite de traite 100 000 lignes ( Je n ai pas besoin d'autant mais je sais pas pourquoi elles ne se supprime pas)

Jai donc utilise Index Equiv mais mon ma macro est beaucoup moins rapide et crash beaucoup plus. merci du tuyaux, mais comme je traite des bases de donnees de 2000 a 6000 valeurs, c'est beaucoup moins fluide que avec 33.
Taille = 33 car je ne pouvais pas mettre la taille original car trop gros pour update sur le forum.
 
Re,
Essayez d'introduire "Application.ScreenUpdating = false" juste après sub.
Ca peut accélérer les choses.

Ensuite pour vraiment accélérer il faut passer S2 en array. Calcul dans l'array puis transfert de l'array dans S2.
En PJ un essai. Normalement cela devrait aller plus vite.
 

Pièces jointes

Dernière édition:
- 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

Discussions similaires

Réponses
4
Affichages
671
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
529
Réponses
7
Affichages
759
Réponses
3
Affichages
964
Retour