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 -
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 :
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
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre 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
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.
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 ?