Execution d'une macro (délais important)

  • Initiateur de la discussion Initiateur de la discussion bloomby
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Re : Execution d'une macro (délais important)

Bonjour le fil, bloomby

😕 😕
je veux ... ajouter un code qui va défini le range Range("C3:AO3").Select
comme étant .Value
😕 😕
Dim v As Integer
v = t(1, n - 31)
For n = 31 To 68
v = CInt(UserForm1.Controls("TextBox" & 1000 + n).Value)
Je crois que si tu nous envoyais un classeur, ce serait plus simple

A plus
 
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

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
824
Retour