Execution d'une macro (délais important)

bloomby

XLDnaute Occasionnel
Bonjour à tous,

J'ai une macro qui est à l'intérieur d'un userform
Cette macro à pour but d'enregistrer les données qui sont afficher dans les textboxs et combobox sur la feuille 1

Par contre, le délais me semble très important par rapport à la longueur de la boucle. (Plus de 60 secondes) Est-ce que le fait de déclarer la variable as Variant peu avoir un impact ?

Est-ce que je serais mieux d'inclure le code dans un module au lieu d'écrire Call ..... et faire rouler le code à l'intérieur du userform ?

Voici les deux partie de code que j"utilise au sein du userform

HTML:
Private Sub Record_P_1_Data_Click()
Label1.Caption = "Traitement en cours"
UserForm1.Repaint
Call Record_P1_data
Label1.Caption = "Traitement terminé"
End Sub

HTML:
Sub Record_P1_data()
Dim n As Variant
For n = 31 To 68
Sheets("P1").Cells(2, n - 28).Value = UserForm1.Controls("TextBox" & n).Value
Sheets("P1").Cells(4, n - 28).Value = UserForm1.Controls("ComboBox" & n).Value
Sheets("P1").Cells(3, n - 28).Value = UserForm1.Controls("TextBox" & 1000 + n).Value
Next n
End Sub

Merci Bloomby
 

bloomby

XLDnaute Occasionnel
Re : Execution d'une macro (délais important)

Bonjour le fil, bonjour soenda,

alors voila enfin un exemple,
La méthode utilisé fait en sorte que l'enregistrement ne se fait pas en .value

merci de ton aide
 

Pièces jointes

  • Book1.zip
    16.2 KB · Affichages: 11
  • Book1.zip
    16.2 KB · Affichages: 12
  • Book1.zip
    16.2 KB · Affichages: 11

soenda

XLDnaute Accro
Re : Execution d'une macro (délais important)

Bonjour le fil, Bloomby

Pour être additionnés, les nombres ne doivent pas être au format texte.

[A1] = TextBox1.Value est l'équivalent de [A1] = TextBox1.Text
Tu peux même écrire [A1] = TextBox1
Dans ces 3 cas [A1] est au format texte

[A1] = Val(TextBox1)
Ici [A1] est au format Nombre

Voir un début de correction en PJ.

A plus
 

Pièces jointes

  • Book1.xls
    53.5 KB · Affichages: 34
  • Book1.xls
    53.5 KB · Affichages: 38
  • Book1.xls
    53.5 KB · Affichages: 36

bloomby

XLDnaute Occasionnel
Re : Execution d'une macro (délais important)

Bonjour fil, soenda,

Le fichier fonctionne très bien, mais je suis incapable de l'adapter à mon projet.
En fait, j'ai plus que 5 textbox pour les %

j'ai essayé d'en rajouter 2 au fichier que tu as envoyé et je reçois un msg d'erreur


voici le code:
Sub Enregistrer_data()

Dim n As Integer
Dim tChaine(7) As String
Dim tSingle(7) As Single

For n = 30 To 36
tChaine(n - 30) = UserForm1.Controls("TextBox" & n)
tSingle(n - 30) = Val(UserForm1.Controls("TextBox" & 1000 + n)) / 100
Next n

Sheets("sheet1").[B2:H2] = tChaine
Sheets("Sheet1").[B3:H3] = tSingle

End Sub

l'erreur est produte par cette partie de code:
tSingle(n - 30) = Val(UserForm1.Controls("TextBox" & 1000 + n)) / 100

merci bloomby
 

soenda

XLDnaute Accro
Re : Execution d'une macro (délais important)

Bonjour le fil, Bloomby

- As-tu adapté la taille de ton tableau au nombre de "TextBox" ?
- As-tu vérifié le nom de tes "TextBox" ?

Et surtout, quel message d'erreur te renvoie Excel ?

A plus
 

Discussions similaires

Statistiques des forums

Discussions
312 584
Messages
2 089 991
Membres
104 330
dernier inscrit
joedal