Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui tourne pendant très longtemps

  • Initiateur de la discussion Initiateur de la discussion Machapi
  • 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 !

Machapi

XLDnaute Nouveau
Bonjour,

J'ai crée un petit code VBA qui a l'objectif suivant :

J'ai une liste de références sur une feuille, je compare ses références avec celles présentes sur une autre feuille. Si les références sont égales je veux écrire la quantité adequouat dans la première feuille.

Ca donne ca :
Code:
Sub prendre()

Dim i As Integer
Dim j As Integer

For i = 2 To 5050
For j = 2 To 3250
    If Sheets("bon").Cells(i, 1).Value = Sheets("donnee").Cells(j, 1).Value Then
    Sheets("donnee").Cells(j, 2).Copy Sheets("bon").Cells(i, 2)
    End If
 Next
 Next


End Sub

Voilà la marco met vraiment beaucoup de temps à se réaliser (plus de 5 minutes). Comment puis-je l'améliorer ?
 
Re : Macro qui tourne pendant très longtemps

Bonjour Machapi

A tester:

Code:
Sub test()
tablo1 = Sheets("bon").Range("A2:B5050")
tablo2 = Sheets("donnee").Range("A2:B3250")
For n = LBound(tablo1, 1) To UBound(tablo1, 1)
 For m = LBound(tablo2, 1) To UBound(tablo2, 1)
   If tablo1(n, 1) = tablo2(m, 1) Then
     tablo2(m, 2) = tablo1(n, 2)
   End If
 Next
Next
Sheets("donnee").Range("A2").Resize(UBound(tablo2, 1), UBound(tablo2, 2)) = tablo2
End Sub
 
Re : Macro qui tourne pendant très longtemps

Bonjour Machapi, PierreJean,

C'est sans garantie, mais puisque je l'ai élaborée je propose une autre solution qui devrait quand même accélérer un peu le processus:

Code:
Sub prendre()

Dim i As Integer
Dim Cel As Range

For i = 2 To 5050
  Set Cel = Sheets("donnee").Range("A2:A3250").Find(Sheets("bon").Cells(i, 1).Value, LookIn:=xlValues, lookat:=xlWhole)
  If Not Cel Is Nothing Then Cel.Copy Sheets("bon").Cells(i, 2)
Next
End Sub
Mais il est vrai que la solution manipulant des tableaux devrait être bien plus rapide.

A +

Cordialement.
 
Re : Macro qui tourne pendant très longtemps

Edit : tout vas bien.

Merci je vais essayer avec ce que vous me proposez. (quand elle aura fini de tourner j'ai essayé de la modifier seule mais c'est toujours aussi long ...)
 
- 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
4
Affichages
581
Réponses
5
Affichages
711
Réponses
8
Affichages
651
Réponses
8
Affichages
270
Réponses
10
Affichages
533
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
373
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
218
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
427
Réponses
5
Affichages
478
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…