VBA Boucle Loop trop lente

Bonjour,
j'utilise une boucle loop dans mon code sauf que ayant 2306 lignes ma boucle met 4-5 secondes à se faire, sauf que étant une manipulation qu'il faut faire souvent cela vient faire perdre pas mal de temps. Il me semble qu'il est possible de contourner cela en passant le Application.ScreenUpdating en False, mais étant encore novice en VBA, je n'arrive pas à l'implémenter dans mon code sans que ma boucle n'en soit pas affectée. Merci d'avance.
mon code:

Private Sub txtNumMaterial_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txtNumMaterial = "" Then
MsgBox "Please Write the Material Number"
Else

Range("A1").Select
Do Until ActiveCell = UCase(Me.txtNumMaterial) Or ActiveCell = ""
ActiveCell.Offset(1, 0).Select
Loop
If ActiveCell = UCase(Me.txtNumMaterial.Value) Then
MsgBox "The Material Number " & ActiveCell & " already exist in the Database"
Me.txtNumMaterial = ""
Me.txtNumMaterial.SetFocus
End If
End If
End Sub

Bonjour

Si le but est de rechercher une valeur, inutile de faire une boucle : utiliser find

Bonjour,

teste comme ceci

Private Sub txtNumMaterial_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If txtNumMaterial = "" Then
    MsgBox "Please Write the Material Number"
  Else
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Range("A1").Select
      Do Until ActiveCell = UCase(Me.txtNumMaterial) Or ActiveCell = ""
        ActiveCell.Offset(1, 0).Select
      Loop
    If ActiveCell = UCase(Me.txtNumMaterial.Value) Then
      MsgBox "The Material Number " & ActiveCell & " already exist in the Database"
      Me.txtNumMaterial = ""
      Me.txtNumMaterial.SetFocus
    End If
  End If
  Application.Calculation = xlCalculationAutomatic
End Sub

Ou alors un exemple plus rapide à mettre à ta sauce avec Dictionnary

14samuel-bardin.xlsm (230.66 Ko)
Bonjour, tout d'abord merci pour votre réponse.
Le but ici est de checker si la valeur est déjà présente dans la colonne afin de pouvoir continuer la saisie du formulaire ou non.
Est-ce que dans ce cas "find" fonctionnerait ?

RE

Oui : du style

Set X = Range("A:A").Find(UCase(Me.txtNumMaterial))
If Not X Is Nothing Then MsgBox "The Material Number " & Me.txtNumMaterial & " already exist in the Database"
Rechercher des sujets similaires à "vba boucle loop trop lente"