Lenteur saisi textbox

Bonjour à tous,

Pourriez vous me dire pourquoi dans mon userform "commande" quand j’écris dans ma textbox "txtréférence" c'est trés lent alors que dans mes autres textbox ca écris instantanément?

Bonjour Reglaet, bonjour le forum,

Chaque fois que tu tapes un caractère dans la TextBox le code ci-dessous s'exécute, ce qui ralenti considérablement !... Mais puisque tu poses la question, j'imagine que tu n'est pas l'auteur de ce code...

Private Sub txtRéférence_Change()
Dim LgMax As Long
Dim i As Long
txtRéférence = UCase(txtRéférence)
If Feuil4.Cells(17, 2).Value = 1 Then 'Détection paramètre choisi pour la modification de pièces
If Me.txtRéférence.Text = "" Then
    If Me.Lb_ref_existante.Visible = True Then Me.Lb_ref_existante.Visible = False
    Exit Sub
End If
Application.ScreenUpdating = False
    If lgp = 0 Then 'Détection ajout nouvelle pièce
        With Feuil32
        'Désactive les filtres et affiche toutes les lignes masquées
        If .FilterMode = True Then .ShowAllData
        .Rows("7:3004").EntireRow.Hidden = False

        LgMax = .Range("A10000").End(xlUp).Row 'Numéro de la dernière ligne vi
        If Me.Lb_ref_existante.Visible = True Then Me.Lb_ref_existante.Visible = False

        'Recherche de doublon
        For i = 7 To LgMax
            If .Cells(i, 1).Text = Me.txtRéférence.Text Then
                Me.Lb_ref_existante.Visible = True
                Exit Sub
            End If
        Next i

        End With
    End If
Application.ScreenUpdating = True
End If
End Sub

OK merci,

non je ne suis pas à l'origine de ce code mais je n' avait pas pensé de regardé le change du textbox effectivement ca vérifie qu'il n'y ai pas de doublons dans mes références.

Peut-on optimiser ce code pour que ca aille plus vite lors de la saisie?

Re,

Moi je n'utiliserais pas le code dans la procédure Change de la Textbox mais uniquement à la fin de l'édition, dans la procédure Exit...

qu'entend tu par "à la fin de l'édition dans la procédure exit" il faudrait que je place le code quand je clique sur le bouton enregistrer?

Re,

Actuellement ton code est dans la procédure : Private Sub txtRéférence_Change(). C'est à dire qu'il s'exécute chaque fois que tu tapes un caractère. Remplace cette première ligne par :

Private Sub txtRéférence_Exit(ByVal Cancel As MSForms.ReturnBoolean)

et le code va s'exécuter uniquement à la sortie de cette Textbox quand tu vas sur un autre contrôle... L'idée de le placer à l'enregistrement n'est pas mauvaise non plus avec un Exit Sub si il y a doublon.

Merci ThauThème

j'ai opté pour remplacer la première ligne de la sub par ( Private Sub txtRéférence_Exit(ByVal Cancel As MSForms.ReturnBoolean) ça fonctionne et ça me convient très bien.

Rechercher des sujets similaires à "lenteur saisi textbox"