Demande d'aide sur un programme VBA
papish_4732
Messages postés
28
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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 :
Merci cordialement !
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. |
A voir également:
- Demande d'aide sur un programme VBA
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme sur windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
5 réponses
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.
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.
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.
Merci vraiment @diablo13800 j'ai essayé pour 300000 lignes pour 2 colonnes ca vient, mais pour les 35 colonnes en total c'est lent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
il serait préférable que tu expliques le résultat attendu.
il serait préférable que tu expliques le résultat attendu.
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 ?