Temps différent si methode lancé via feuille ou userform

Bonjour,

Je suis face à un problème étrange pour moi.

J'ai une méthode dans un module qui s'appelle : ImportClient ( méthode sans paramètre)

Si je l'apelle via un userform la méthode mets 11 sec à s'exécuter entièrement.

Si je l'appelle via le code de la page avec l'event 'double clic' , la méthode mets 1min 30

code qui est lancé via le userform :

Private Sub CommandButton1_Click()
Dim client As String
If TextBox1.Value <> "" Then
    client = TextBox1.Value
Else
    client = ComboBox1.Value
End If
Range("tiers") = "'" & client

ImportClient

UserForm5.Hide
End Sub

code qui est lancé via la feuille :

Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If ActiveCell.Column = 2 Then
    Sheets("client").Range("tiers").NumberFormat = "@"
       Sheets("client").Range("tiers").Value = "'" & ActiveCell
    ActiveCell.NumberFormat = "@"

    ImportClient
    Sheets("Client").Activate
    Exit Sub

End If
End Sub

J'ai vérifié les :

Application.ScreenUpdating

Application.EnableEvents

Application.Calculation

Mais cela ne vient pas de cela.

Je n'ai aucune idée car c'est vraiment la méthode " ImportClient" qui ne s'exécute pas avec le même temps d'execution suivant si elle est appelé via le userform ou via la feuille avec un double clic.

Merci par avance de votre réponse.

Je peux vous fournir plus d'info si je n'ai pas été clair.

Cdt

Alfi

Bonjour,

il y a une différence entre les deux codes est-ce utile ?

La différence c'est la mise au format @ de la plage Tiers, hors dans le code Userform il n'en est pas question...

Est-ce bien util de le faire systématiquement ? Si la plage est dans le bon format à l'origine pour le Userform, pourquoi ne le serait-elle pas pour le code événementiel de la feuille ?

Je ne sais pas si c'est ça mais la mise au format pour une grande plage peut prendre du temps, non ?

Je verais le code comme ceci :

Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Column = 2 Then
    Sheets("Client").Range("tiers").Value = "'" & ActiveCell
    ImportClient
    Sheets("Client").Activate
End If
End Sub

Pas testé...

@ bientôt

LouReeD

merci LouReeD de ta réponse.

Malheureusement cela ne change pas grand chose.

et le ImportClient ?

@ bientôt

LouReeD

Rechercher des sujets similaires à "temps different methode lance via feuille userform"