[Macro lente] Changement de signe d'une cellule suivant une valeur

Bonjour, je suis un petit nouveau sur le forum alors merci d'avance pour vos réponses

Je viens à vous car je suis un peu embêté avec mon code vba ci joint :

Sub Màj_Qt()
Dim nombre As Integer
Dim quantité As Double
Dim Mvt As Double
Dim montant As Double

nombre = 2
quantité = Sheets("Réception 2020").Range("K2").Value
montant = Sheets("Réception 2020").Range("N2").Value

    While quantité <> 0
 Mvt = Sheets("Réception 2020").Range("I" & nombre).Value

        If Mvt = 101 Then
        Sheets("Réception 2020").Range("K" & nombre).Value = Abs(quantité)

        Else
        Sheets("Réception 2020").Range("K" & nombre).Value = -Abs(quantité)
        End If

            If Mvt = 101 Then
            Sheets("Réception 2020").Range("N" & nombre).Value = Abs(montant)

            Else
            Sheets("Réception 2020").Range("N" & nombre).Value = -Abs(montant)
            End If

    nombre = nombre + 1
    quantité = Sheets("Réception 2020").Range("K" & nombre).Value
    Mvt = Sheets("Réception 2020").Range("I" & nombre).Value
    montant = Sheets("Réception 2020").Range("N" & nombre).Value

     Wend

End Sub

L’intérêt de ce code est de simplement changer le signe de deux cellules en fonction du type de "mouvement" trouvé dans la colonne I

Or, il fonctionne plutôt bien dans un contexte avec peu de lignes. J'ai fait des test avec une centaine de lignes et cela a pris plusieurs minutes. Or j'aimerais l'utiliser dans un contexte avec plus de 30 000 lignes... d'où mon problème.

Je suis un débutant sur VBA donc peut être que j'ai fait une erreur grossière

Merci d'avance

8macro-lente.xlsm (14.11 Ko)

Bonjour,

Une suggestion :

Sub Màj_Qt()

'Déclaration des variable
Dim nombre As Integer, quantité As Double, Mvt As Double, montant As Double

Application.ScreenUpdating = False 'Désactive l'affichage le temps de la macro
Application.Calculation = xlCalculationManual 'Désactive le recalcul auto des formules Excel
With Sheets("Réception 2020") 'Tout élément commençant par "." se rattache à cette feuille
    For nombre = 2 To .Range("K" & Rows.Count).End(xlUp).Row 'Boucle sur les lignes
        quantité = .Range("K" & nombre).Value
        Mvt = .Range("I" & nombre).Value
        montant = .Range("N" & nombre).Value
        If Mvt = 101 Then
            .Range("K" & nombre).Value = Abs(quantité)
            .Range("N" & nombre).Value = Abs(montant)
        Else
            .Range("K" & nombre).Value = -Abs(quantité)
            .Range("N" & nombre).Value = -Abs(montant)
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic 'Réactive le recalcul auto des formules Excel

End Sub

Merci beaucoup cela marche parfaitement !

Rechercher des sujets similaires à "macro lente changement signe suivant valeur"