Demande d'aide sur un programme VBA

papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, qui peut m'aider sur ce script ?

Au fait la variable ne prend que la valeur "t=3" et s'arrête.
De plus, la recherchev doit se faire sur presque 300000 lignes, ce qui rend la macro lente.
Qui pourrait me proposer une optimisation du code sachant que j'ai utilisé ceci avant le début du programme :

Sub TurnOffStuff()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
End Sub

Sub TurnOnStuff()
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub




Sub recherchev3()
Dim i As Double, t As Double
Dim wb As Workbook, fl As Worksheet
Set wb = Workbooks("SGPCSIN.xlsx")
Set fl = wb.Sheets("LSENEGAL_SGPCSIN")
Set maplage = fl.Range("B:AJ")
i = 2
t = 3
Call TurnOffStuff
While t <= 35
Do While Workbooks("Sinistres_par_actes_052021.xlsm").Sheets("LSENEGAL_SGPCPSI").Cells(i, 1) <> ""
Cells(i, 21 + t) = Application.VLookup(Cells(i, 2).Value, maplage, t, False)
i = i + 1
Loop
t = t + 1
Wend
Call TurnOnStuff
End Sub


Merci cordialement !
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

5 réponses

diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Bonjour,

Je pense que ca vient du fait que vous ne faites jamais un reset de i.

Du coup, Tout fonctionne pour t = 3, mais lorsque t passe a 4, i a encore sa valeur de fin, et donc ignore le do While qui lui correspond.

Vous devriez peut-être initier votre i juste après le while t<=35.
0
papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup @diablo13800, je pense que ca devrait marcher.
J'essaie de vérifier en compilant mais ca prend trop de temps pour s'exécuter.
Qui peut m'aider à réduire le temps d'exécution en regardant mon programme ?
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860 > papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Malheureusement, sur plus de 300000 ligne et une trentaine de colonnes il est difficile d'avoir des macros rapides
0
papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
C'est vraiment dommage car j'ai une "base de données" qui vit et de ce fait le nombre de lignes augmente au fil du temps; je croyais que les macros étaient une alternative.
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Les macro sont des alternatives, mais pour le coup votre tableau est vraiment gros...

Votre formule semble être de retranscrire que certaines colonnes colonne de votre tableau initial, est-ce bien ca?
0
papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Voila @diablo13800 c'est vraiment ca !
0
diablo13800 Messages postés 2890 Date d'inscription   Statut Membre Dernière intervention   1 860
 
Peut-être qu'un TCD pourrait éventuellement vous aider, essayez de vous renseigné dessus
0
papish_4732 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci vraiment @diablo13800 j'ai essayé pour 300000 lignes pour 2 colonnes ca vient, mais pour les 35 colonnes en total c'est lent.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
il serait préférable que tu expliques le résultat attendu.
0