Demande d'aide sur un programme VBA

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

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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 ?
    2. @papish_4732Malheureusement, sur plus de 300000 ligne et une trentaine de colonnes il est difficile d'avoir des macros rapides
  2. 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.
    1. 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?
  3. Voila @diablo13800 c'est vraiment ca !
    1. Peut-être qu'un TCD pourrait éventuellement vous aider, essayez de vous renseigné dessus
  4. Merci vraiment @diablo13800 j'ai essayé pour 300000 lignes pour 2 colonnes ca vient, mais pour les 35 colonnes en total c'est lent.
    1. Contributeur
      bonjour,
      il serait préférable que tu expliques le résultat attendu.