IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro lent dans incrémentation de numéro de facture


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Commencez par ajouter la ligne suivante après la dernière ligne de déclaration des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ligExport As Long, lNumFacture As Long, oCellNumFacture As Range
    Dim booAddFacture As Boolean
        Application.ScreenUpdating = False
    Cdlt

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonjour Arturo83

    Merci de vous être penché sur mon sujet.
    J'ai essayé mais j'ai pas senti de changement.
    Cordialement

Discussions similaires

  1. Numéro de facture qui s'incrémente sans être numéroAuto
    Par joseedaccess dans le forum VBA Access
    Réponses: 15
    Dernier message: 05/09/2017, 12h26
  2. Incrémentation de numéro de facture par mois
    Par nisa thomas dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 07/02/2016, 17h49
  3. Réponses: 2
    Dernier message: 07/09/2010, 13h39
  4. [Toutes versions] incrémenter un numéro dans un formulaire
    Par thomas.dusart dans le forum IHM
    Réponses: 4
    Dernier message: 14/06/2010, 00h08
  5. Incrémentation du numéro de facture
    Par Toison dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/05/2008, 16h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo