Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Augmenter la rapidité d'un macro

  • Initiateur de la discussion Initiateur de la discussion Myst
  • 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 !

Myst

XLDnaute Occasionnel
Bonjour
Quelqu'un aurait il le temps de jeter un œil dans le fichier joint et de trouver un moyen d’accélérer l'écriture des données de l'userform2 vers la page "Base" actuellement 12 secondes son nécessaire après avoir cliquer sur le bouton valider ,première demande
Dans l'UserForm2 il y a 3 ComboBox(1 ,2 et 3) et 1 TextBox56 situés au dessus du multipage qui affiche un message s'ils ne sont pas remplis ,il faudrait qu'ils passent en rouge lorsque le message s'affiche pour indique ou il manque quelque chose et repasse en blanc après la saisie ,deuxième demande
merci
 

Pièces jointes

Re : Augmenter la rapidité d'un macro

Bonjour à tous

peut-être un léger mieux en supprimant les déterminations à répétition de la première ligne libre et les Sheets("Base").activate .

A tester
Dans Private Sub CommandButton2_Click()
Code:
With Sheets("Base")   ' attention ne pas oublier le  [COLOR="#0000FF"][B].[/B][/COLOR] devant chaque range
 num = Sheets("Base").Range("A100000").End(xlUp).Row + 1 ' on détermine une fois
'code de saisie de la page 1

 .Range("A" & num).Value = "Jour"
 .Range("B" & num).Value = "Semaine"
 .Range("C" & num).Value = "EQ"
 .Range("D" & num).Value = "Code"
 .Range("E" & num).Value = ""
 .Range("F" & num).Value = "EXTRUDEUSE"
 .Range("G" & num).Value = ""
 .Range("H" & num).Value = "Cible"
 .Range("I" & num).Value = "Tolérance"
 .Range("J" & num).Value = "Valeur"
 .Range("K" & num).Value = "Actions correctives"
 .Range("L" & num).Value = "Valeur après réglage"

'code de saisie de la page 1 - 1e ligne'
 num = num + 1
 
 .Range("A" & num).Value = ComboBox1.Value
...
....

terminer par End with juste avant Unload Me

Si ce n'était pas assez rapide, il faudrait essayer de passer par un tableau ( écriture plus rapide) et coller le tableau dans la feuille.

A voir

A+
 
Re : Augmenter la rapidité d'un macro

Bonsoir.
Pour gagner du temps, tout préparer dans un tableau de Variant et l'écrire par son affectation, en une seule instruction, à la propriété Value de toute la plage à garnir. Parce que c'est à peine plus long que chacune des affectation à une cellule individuelle.
 
Re : Augmenter la rapidité d'un macro

Re et bonsoir Dranreb


alors, la seconde solution préconisée:

Code:
'code de saisie de la page 1
Dim Montableau(1 To 53, 1 To 12)
With Sheets("base")
 num = .Range("A65000").End(xlUp).Row + 1

 Montableau(num, 1) = "Jour"
 Montableau(num, 2) = "Semaine"
 Montableau(num, 3) = "EQ"
 Montableau(num, 4) = "Code"
 Montableau(num, 5) = ""
 Montableau(num, 6) = "EXTRUDEUSE"
 Montableau(num, 7) = ""
 Montableau(num, 8) = "Cible"
 Montableau(num, 9) = "Tolérance"
 Montableau(num, 10) = "Valeur"
 Montableau(num, 11) = "Actions correctives"
 Montableau(num, 12) = "Valeur après réglage"

'code de saisie de la page 1 - 1e ligne'
num = num + 1
 Montableau(num, 1) = ComboBox1.Value
 Montableau(num, 2) = ComboBox2.Value
...
...

et finir par

Code:
...
...
 .Cells(num, 1).Resize(UBound(Montableau, 1), UBound(Montableau, 2)) = Montableau
 End With
 
 Unload Me
 
 End Sub


Heu... Bon courage

A+
 
Re : Augmenter la rapidité d'un macro

Bonjour Dranreb et Paf
J'ai tout rectifié comme conseillé par Paf ,fait quelques modifications ci-dessous et l'enregistrement est maintenant fait a la vitesse de la lumière
Un grand merci a vous deux

Dim Montableau(1 To 63, 1 To 12)
With Sheets("base")
num = 1
Montableau(num, 1) = ""
num = num + 1
Montableau(num, 1) = "Jour"
Montableau(num, 2) = "Semaine"
Montableau(num, 3) = "EQ"
Montableau(num, 4) = "Code"
Montableau(num, 5) = ""
Montableau(num, 6) = "EXTRUDEUSE"
Montableau(num, 7) = ""
Montableau(num, 8) = "Cible"
Montableau(num, 9) = "Tolérance"
Montableau(num, 10) = "Valeur"
Montableau(num, 11) = "Actions correctives"
Montableau(num, 12) = "Valeur après réglage"
...

ET JE FINI PAR :
num = .Range("F100000").End(xlUp).Row + 1
.Cells(num, 1).Resize(UBound(Montableau, 1), UBound(Montableau, 2)) = Montableau
End With
Unload Me
End Sub
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…