Accélérer une maccro de recopie d'infos

  • Initiateur de la discussion Initiateur de la discussion redy13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

redy13

XLDnaute Nouveau
Bonjour,
J'avais créé un fichier de compilation avec de nombreuses recherche V : le fichier sur lequel pointait mes recherche V fait 12.000 lignes à la moidre modif, le système bloquait quelques secondes pour recalculer.
Pour éviter cette lourdeur, j'ai donc créer une macro excel pour aller chercher mes infos : la macro est toute bête, pour chaque ligne de ma feuille 1 (1100 lignes), il va chercher les infos de 6 colonnes dans la page 2 (12000 lignes). Mon problème est que cette macro met 10 min à tourner.
Voici ma macro :
Sub Recherche_MADSTOCK()
'
i = 2
Do While Feuil1.Cells(i, 2) <> ""
Feuil1.Cells(i, 16) = ""
Feuil1.Cells(i, 19) = ""
Feuil1.Cells(i, 22) = ""
Feuil1.Cells(i, 23) = ""
Feuil1.Cells(i, 28) = ""
Feuil1.Cells(i, 29) = ""
Feuil1.Cells(i, 34) = ""
Feuil1.Cells(i, 35) = ""
j = 2
Do While Feuil2.Cells(j, 2) <> ""
If Feuil1.Cells(i, 2) = Feuil2.Cells(j, 2) Then
Feuil1.Cells(i, 16) = Feuil2.Cells(j, 4)
Feuil1.Cells(i, 19) = Feuil2.Cells(j, 6)
Feuil1.Cells(i, 22) = Feuil2.Cells(j, 7)
If Feuil1.Cells(i, 22) = 0 Then
Feuil1.Cells(i, 23) = ""
Else: Feuil1.Cells(i, 23) = Feuil2.Cells(j, 8) + Feuil1.Cells(i, 15)
End If
Feuil1.Cells(i, 28) = Feuil2.Cells(j, 11)
If Feuil1.Cells(i, 28) = "" Then
Feuil1.Cells(i, 29) = ""
Else: Feuil1.Cells(i, 29) = Feuil2.Cells(j, 12) + Feuil1.Cells(i, 15)
End If
Feuil1.Cells(i, 34) = Feuil2.Cells(j, 13)
If Feuil1.Cells(i, 34) = "" Then
Feuil1.Cells(i, 35) = ""
Else: Feuil1.Cells(i, 35) = Feuil2.Cells(j, 14) + Feuil1.Cells(i, 15)
End If
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop

End Sub

Sauriez vous m'aider à accélérer cette macro?
Merci,
Caroline
 
Re : Accélérer une maccro de recopie d'infos

Bonjour,
pour accelerer la macro tu peux commencer par remplacer le code par celui ci
Code:
Sub Recherche_MADSTOCK()
'
application.screenupdating=false
i = 2
Do While Feuil1.Cells(i, 2) <> ""
Feuil1.Cells(i, 16) = ""
Feuil1.Cells(i, 19) = ""
Feuil1.Cells(i, 22) = ""
Feuil1.Cells(i, 23) = ""
Feuil1.Cells(i, 28) = ""
Feuil1.Cells(i, 29) = ""
Feuil1.Cells(i, 34) = ""
Feuil1.Cells(i, 35) = ""
j = 2
Do While Feuil2.Cells(j, 2) <> ""
If Feuil1.Cells(i, 2) = Feuil2.Cells(j, 2) Then
Feuil1.Cells(i, 16) = Feuil2.Cells(j, 4)
Feuil1.Cells(i, 19) = Feuil2.Cells(j, 6)
Feuil1.Cells(i, 22) = Feuil2.Cells(j, 7)
If Feuil1.Cells(i, 22) = 0 Then
Feuil1.Cells(i, 23) = ""
Else: Feuil1.Cells(i, 23) = Feuil2.Cells(j, 8) + Feuil1.Cells(i, 15)
End If
Feuil1.Cells(i, 28) = Feuil2.Cells(j, 11)
If Feuil1.Cells(i, 28) = "" Then
Feuil1.Cells(i, 29) = ""
Else: Feuil1.Cells(i, 29) = Feuil2.Cells(j, 12) + Feuil1.Cells(i, 15)
End If
Feuil1.Cells(i, 34) = Feuil2.Cells(j, 13)
If Feuil1.Cells(i, 34) = "" Then
Feuil1.Cells(i, 35) = ""
Else: Feuil1.Cells(i, 35) = Feuil2.Cells(j, 14) + Feuil1.Cells(i, 15)
End If
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop
application.screenupdating=true
End Sub
A+
si pas assez rapide revenir pour retravailler le code
edit: bonjour Carcharodon.C (oups je mai trompé de code d'ou la modif)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
471
Réponses
4
Affichages
179
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
174
Réponses
3
Affichages
665
Retour