Macro lent dans incrémentation de numéro de facture
Bonsoir le forum
Je sollicite vos expériences pour améliorer mon code.
En effet, j'ai un usf qui me permet de facturer les boissons vendues.
Je me sert de la valeur de la cellule A2 nommée NumFacture pour l'incrémentation du numéro de la facture.
Tout se passe avec le code ci-dessous mais le seul problème est qu'il est lent (l'incrémentation et l'affichage du numéro dans le textbox_Réf prend du temps):
- Il permet d'incrémenter le numéro de la facture
- il l'affiche dans le Textbox_Réf
- il centralise les données des controls dans la base de données (feuille "ETAT_VENTE").
Est-il possible d'accélérer le fonctionnement de la macro?
Il m'avait été conseillé dans ce forum de travailler à simplifier mes codes et non de concentrer dans un seul code.
le problème est que je n'arrive pas à le faire.
Vos propositions seront les bienvenues:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Private Sub Factur_Caisses_Click()
Dim ligExport As Long, lNumFacture As Long, oCellNumFacture As Range
Dim booAddFacture As Boolean
'Dim ligExport As Long
ligExport = Feuil2.Range("a" & Rows.Count).End(xlUp).Row + 1
'Affectation de la cellule contanant le numéro de facture à incrémenter
Set oCellNumFacture = ThisWorkbook.Names("NumFacture").RefersToRange
'If Me.Combo_Serveur <> "" And Me.TextBox_Réf <> "" Then 'si service et ref renseignés
For i = 1 To 10 'pour toutes les lignes
If Me.Controls("ComboBox_Bois" & i) <> "" And Me.Controls("TextBox_Qte" & i) <> "" Then 'si tous les contrôles de la ligne sont remplis
If Not booAddFacture Then
booAddFacture = True
lNumFacture = oCellNumFacture.Value + 1
oCellNumFacture.Value = lNumFacture
Me.TextBox_Réf.Value = "FA" & Format(lNumFacture, "00000")
End If
'export
With Feuil2
.Range("a" & ligExport) = Date
.Range("b" & ligExport) = Me.Controls("ComboBox_Bois" & i)
.Range("c" & ligExport) = CDbl(Me.Controls("TextBox_Qte" & i))
.Range("d" & ligExport) = CDbl(Me.Controls("TextBox_Mtant" & i))
.Range("e" & ligExport) = Me.Combo_Serveur
.Range("f" & ligExport) = Me.TextBox_Réf
.Range("g" & ligExport) = Me.CodeExpl
.Range("h" & ligExport) = CDbl(Me.TextBox_Encais)
.Range("i" & ligExport) = CDbl(Me.TextBox_Avoir)
.Range("j" & ligExport) = CDbl(Me.TextBox_Reste)
End With
'incrémentation de la ligne
ligExport = ligExport + 1
End If
Next i
'End If
End Sub |