Demande d'aide sur un programme VBA

Fermé
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021 - Modifié le 10 juin 2021 à 15:00
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 14 juin 2021 à 19:03
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 857
10 juin 2021 à 15:02
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 lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
14 juin 2021 à 15:13
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 857 > papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
14 juin 2021 à 15:17
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 lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
14 juin 2021 à 16:58
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 jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 857
14 juin 2021 à 17:21
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 lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
14 juin 2021 à 17:51
Voila @diablo13800 c'est vraiment ca !
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 857
14 juin 2021 à 17:55
Peut-être qu'un TCD pourrait éventuellement vous aider, essayez de vous renseigné dessus
0
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
14 juin 2021 à 19:02
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 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 Ambassadeur 1 579
14 juin 2021 à 19:03
bonjour,
il serait préférable que tu expliques le résultat attendu.
0