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

Access Discussion :

Lenteur d'exécution code vba [AC-2016]


Sujet :

Access

  1. #1
    Membre averti
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 47
    Par défaut Lenteur d'exécution code vba
    Bonjour à tous,

    j'ai une lenteur quand j'exécute mon code. je sais que cela vient du champs NO_ordre. j'ajoute un indice chronologique a chaque validation de ligne en allant chercher l'indice max dans la table transaction.

    vous trouverez ci dessous mon code. Auriez vous svp une solution a me proposer pour que cette indice s'ajoute plus rapidement, car nous scannons 3 code barre rapidement et le code n'a pas le temps de s'executer entre chaque scan?

    Merci pour votre aide

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub contenant_AfterUpdate()
    Dim ligne As Recordset:
    Dim base As Database
     
    MATERIAL_LOCAL = ""
    LIBELLE = ""
    Me.LAZONE = ""
    Me.NO_ORDRE = ""
    Me.NBR_CARTON_PAL = ""
    Me.SITE = ""
    Me.EMP = ""
    Me.valide = ""
    Me.LAZONE_1 = ""
    Me.CODE_MVT = ""
     
     
     
    If Not IsNull(Me.CONTENANT) Then
    Set base = Application.CurrentDb
    Set ligne = CurrentDb.OpenRecordset("SELECT * FROM TABLE_TRANSACTION  WHERE contenant='" & CONTENANT.Value & "'", dbOpenDynaset)
    ligne.MoveFirst
    Me.MATERIAL_LOCAL = ligne.Fields("MATERIAL_LOCAL").Value
    Me.LIBELLE = ligne.Fields("LIBELLE").Value
    Me.NBR_CARTON_PAL = ligne.Fields("CARTON_PAL").Value
    Me.CODE_MVT = "925"
    Me.NO_ORDRE = "REP000" & Me.N°REC & "-" & IIf(DLookup("[indice]", "[Requête_MAX_INDICE_REP]") > 1, DLookup("[indice]", "[Requête_MAX_INDICE_REP]"), Me.QTT_DEPOSE_TRANS + 1)
    Me.SITE = "05"
    Me.EMP = "999"
    Me.LAZONE = "PD999"
    Me.LAZONE_1 = ligne.Fields("LAZONE").Value
    DoCmd.OpenQuery "Requête_AJOUT_TABLE_TEMPORAIRE_ALIMX3", , acReadOnly
    DoCmd.OpenQuery "Requête_AJOUT_TABLE_HISTORIQUE_ALIMX3", , acReadOnly
    Me.QTT_DEPOSE_TRANS.Value = DCount("*", "TABLE_TEMPORAIRE_ALIMX3", "CONTENANT")
    Me.ALIM_PAL.Value = DLookup("[QUANTITE]", "[Requête_PALETTE_ALIMENTE]")
    CONTENANT = ""
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
    CONTENANT.SetFocus
    DoCmd.Requery
     
     
     
     
    Else
    MsgBox "LE CHAMPS CONTENANT NE PEUT PAS ETRE VIDE", vbCritical, "ATTENTION"
    CONTENANT.SetFocus
    End If
     End Sub

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 148
    Par défaut
    Bonjour,

    Cette instruction est chronophage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     IIf(DLookup("[indice]", "[Requête_MAX_INDICE_REP]") > 1, DLookup("[indice]", "[Requête_MAX_INDICE_REP]"), Me.QTT_DEPOSE_TRANS + 1)
    Pourquoi utiliser 2 fois le dlookup ?
    On place le résultat dans une variable 1 seule fois puis on exploite la valeur de la variable.

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 47
    Par défaut
    Bonjour,

    Merci pour ce retour, je ne vois pas trop comment ecrire ce que vous me proposez. auriez vous un exemple svp ?

    Cordialement

  4. #4
    Membre averti
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 47
    Par défaut
    Bonjour

    j'ai testé comme ceci mais pas grand changement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.NO_ORDRE = "REP000" & Me.N°REC & "-" & IIf(Nz("[indice]", "[Requête_MAX_INDICE_REP]") > 1, DLookup("[indice]", "[Requête_MAX_INDICE_REP]"), Me.QTT_DEPOSE_TRANS + 1)

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 070
    Par défaut
    qqchose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    n=nz( DLookup("[indice]", "[Requête_MAX_INDICE_REP]"),0)
     
    if n > 1 then
    r = n
    else
    r=  Me.QTT_DEPOSE_TRANS + 1
    end if
     
    Me.NO_ORDRE = "REP000" & Me.N°REC & "-" & r

  6. #6
    Membre averti
    Homme Profil pro
    opérateur
    Inscrit en
    Août 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : opérateur

    Informations forums :
    Inscription : Août 2018
    Messages : 47
    Par défaut
    Bonjour,

    C'est mieux. J'ai du gagner 1 seconde ce qui est bien, après ma table fait 79 000 lignes donc un peu de temps de traitement.

    Merci pour votre aide

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/06/2021, 15h34
  2. Lenteur exécution code vba excel
    Par spikethebloody75 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2019, 20h09
  3. [XL-2016] Lenteur code vba sur Windows 10
    Par desaivresa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/03/2018, 19h47
  4. [XL-2016] Lenteur code VBA
    Par Chatvador dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2017, 10h52
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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