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 :

Regroupement de code à l'aide d'une fonction...


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut Regroupement de code à l'aide d'une fonction...
    Bonjour à tous,

    Je suis tombé sur un code qui ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Ctl10_COUPURE1 _AfterUpdate()
    [Somme_defauts].Value = [1- DEFAUTX].Value + [2- DEFAUTY].Value + [3- DEFAUTX1].Value + [4- DEFAUTY1].Value
    [Somme_defauts_machine1].Value = [1- DEFAUTX].Value + [2- DEFAUTY]
    End Sub
     
    Private Sub Ctl10_COUPURE2_AfterUpdate()
    [Somme_defauts].Value = [1- DEFAUTX].Value + [2- DEFAUTY].Value + [3- DEFAUTX1].Value + [4- DEFAUTY1].Value
    [Somme_defauts_machine2].Value = [1- DEFAUTX1].Value + [2- DEFAUTY1]
    End Sub
    Ceci est reproduit pour chaque zone de texte qui prendra une valeur numérique…

    Quel pourrait-être le code optimisé ? En créant une fonction ?

    Merci à tous

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    merci d'éditer votre premier message et d'utiliser les balises code.

    bouton :
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    Essai ça pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function CalculerValeur(Val0 As Long, Val1 As Long, Optional Val3 As Long, Optional Val4 As Long) as long
        CalculerValeur = Val0 + Val1 + Val2 + Val3 + Val4
    End Function
    Ainsi pour le 1er calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ctl10_COUPURE1 _AfterUpdate() 
    Me![Somme_defauts]=CalculerValeur(Me![1- DEFAUTX], Me![2- DEFAUTY], Me![3- DEFAUTX1], Me![4- DEFAUTY1])
    Me![Somme_defauts_machine1] = CalculerValeur(Me![1- DEFAUTX], Me![2- DEFAUTY]) 
    End Sub

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par cafeine
    Hello,

    merci d'éditer votre premier message et d'utiliser les balises code.

    bouton :
    j'avais oublié dsl !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par keita
    salut
    Essai ça pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function CalculerValeur(Val0 As Long, Val1 As Long, Optional Val3 As Long, Optional Val4 As Long) as long
        CalculerValeur = Val0 + Val1 + Val2 + Val3 + Val4
    End Function
    Ainsi pour le 1er calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ctl10_COUPURE1 _AfterUpdate() 
    Me![Somme_defauts]=CalculerValeur(Me![1- DEFAUTX], Me![2- DEFAUTY], Me![3- DEFAUTX1], Me![4- DEFAUTY1])
    Me![Somme_defauts_machine1] = CalculerValeur(Me![1- DEFAUTX], Me![2- DEFAUTY]) 
    End Sub
    En fait je voyais plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Sommedefauts()
    [Somme_defauts].Value = [1- DEFAUTX].Value + [2- DEFAUTY].Value + [3- DEFAUTX1].Value + [4- DEFAUTY1].Value
    End Function
     
    Function Sommedefautsmachine1()
    [Somme_defauts_machine1].Value = [1- DEFAUTX].Value + [2- DEFAUTY]
    End Function
    Et ainsi pour chaque contrôles j'aurais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ctl10_COUPURE2_AfterUpdate() 
    Call Sommedefauts
    Call Sommedefautsmachine1
    End Sub
    Quelque chose de ce type !!!

    Car ce qui risque d'évoluer sont les [1- DEFAUTX] en en rajoutant ou enlevant donc je souhaiterais le modifier qu'une seule fois et nons pas pour chaque contrôle ;-)

    Voir même pour les contrôle qui font appel au même fonction, serait-il possible de les regroupe de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Private Sub Ctl10_COUPURE1 _AfterUpdate() 
       Private Sub Ctl10_COUPURE2 _AfterUpdate() 
          Then    Call Sommedefauts
                     Call Sommedefautsmachine1
    Mais je ne suis pas convaincu ;-)

    Merci à tous

  6. #6
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    oui c'est possible ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ctl10_COUPURE2_AfterUpdate() 
    Call Sommedefauts 
    Call Sommedefautsmachine1 
    End Sub
    Et meme plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Ctl10_COUPURE2_AfterUpdate() 
          Sommedefauts 
          Sommedefautsmachine1 
    End Sub
    Ici je ne comprends pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Private Sub Ctl10_COUPURE1 _AfterUpdate() 
       Private Sub Ctl10_COUPURE2 _AfterUpdate() 
          Then    Call Sommedefauts 
                     Call Sommedefautsmachine1
    @+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    merci keita c'est parfait ;-)

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

Discussions similaires

  1. [FPDF] Besoin d'aide pour une fonction publipostage..;
    Par dark$hadow dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/02/2007, 15h39
  2. Réponses: 15
    Dernier message: 26/03/2006, 12h10
  3. Aide pour une fonction
    Par mimi060101 dans le forum Scheme
    Réponses: 1
    Dernier message: 24/02/2006, 16h59
  4. Aide sur une fonction / pbm de manipulation de caractère
    Par captainamerica75 dans le forum Access
    Réponses: 3
    Dernier message: 16/02/2006, 11h54
  5. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40

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