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

VBA Access Discussion :

Réduction de code


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut Réduction de code
    Bonjour, il m'arrive un truc tout bête, et je suis persuadée qu'il existe une solution simple et efficace:
    tout d'abord, voilà mon code:
    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
    Public Function DesactiverUO(i As Integer)
    If i = 0 Then
        Me.code.Enabled = False
        Me.nombd.Enabled = False
        Me.nomproduit.Enabled = False
        Me.designation.Enabled = False
        Me.activities.Enabled = False
        Me.technologies.Enabled = False
        Me.volume.Enabled = False
        Me.type.Enabled = False
        Me.competences.Enabled = False
        Me.price.Enabled = False
        Me.version.Enabled = False
        Me.pc.Enabled = False
        Me.alea.Enabled = False
        Me.HiddenUO.Enabled = False
        Me.nom_coeff_UO_1.Enabled = False
        Me.nom_coeff_UO_2.Enabled = False
        Me.nom_coeff_UO_3.Enabled = False
        Me.nom_coeff_UO_4.Enabled = False
        Me.CocheUO.Enabled = False
        Me.DecocheUO.Enabled = False
    Else
        Me.code.Enabled = True
        Me.nombd.Enabled = True
        Me.nomproduit.Enabled = True
        Me.designation.Enabled = True
        Me.activities.Enabled = True
        Me.technologies.Enabled = True
        Me.volume.Enabled = True
        Me.type.Enabled = True
        Me.competences.Enabled = True
        Me.price.Enabled = True
        Me.version.Enabled = True
        Me.pc.Enabled = True
        Me.alea.Enabled = True
        Me.HiddenUO.Enabled = True
        Me.nom_coeff_UO_1.Enabled = True
        Me.nom_coeff_UO_2.Enabled = True
        Me.nom_coeff_UO_3.Enabled = True
        Me.nom_coeff_UO_4.Enabled = True
        Me.CocheUO.Enabled = True
        Me.DecocheUO.Enabled = True
    End If
    End Function
    Comme on peut le voir, ce code est TRES long et ne fait pas grand chose.
    Je suis persuadée qu'il existe une solution plus brève pour ce code, mais je n'ai pas trouvé.

    Vous connaissez vous ?

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    ca dépend. ce sont tous les controles de ton formulaire ou juste certains?

    sinon, tu peux dejà les mettre sur la meme ligne mais ce sera moins lisible.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    ce sont pour la majorité des cases à cocher.
    les 2 derniers sont des boutons.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    je propose (mais LGM confirmera ou non) de tout passer à false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim temp as control 
    for each temp in Me.Controls
    temp.enabled = true
    next
    et de mettre juste les 2 boutons à true


    et vice versa.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    pfff j'avais pas bien compris la question.

    malheureusement ce ne sont pas tous les contrôles du form, il y en a de nombreux autres

  6. #6
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    La solution à partir de cette contribution et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TypeOf MyControl Is CheckBox Then

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    ça serait parfait.... si je n'avais pas plein d'autres checkbox dans mon form....

  8. #8
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    peut-être qu'en renommant toutes mes checkbox en les différenciant par les 2 premières lettres de leut nom ça pourrait le faire...

    par exemple, je pourrait regarder dans tous mes contrôles ceux qui sont des checkbox puis regarder si les 2 premières lettres de leur nom sont "UO" par exemple, et appliquer la modif....

    qu'en pensez-vous ?

  9. #9
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Ce qui veut dire ??

    Il va falloir que tu expliques en quoi la solution ne va pas répondre à ta question.

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    je propose (mais LGM confirmera ou non) de tout passer à false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim temp as control 
    for each temp in Me.Controls
    temp.enabled = true
    next
    et de mettre juste les 2 boutons à true


    et vice versa.
    je confirme rien, j'ai jamais fait d'Access de ma vie
    mais c'est exactement ce à quoi (ton code) que je pensais.
    la solution de lou pitchoum ciblant encore plus les checkbox. il n'y a aucun intéret à connaitre le nom des checkbox puisqu'on les met toutes à false.

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    pour info, voici mon code final, qui fonctionne à merveille !
    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
    Function test(Groupe As String, TypeOperation As String)
    Dim Ctrl As Control
        For Each Ctrl In Me.Controls
            Debug.Print Ctrl.name
            If Left(Ctrl.name, 2) = Groupe Then
                If TypeOf Ctrl Is CheckBox Then
                    Select Case TypeOperation
                        Case "cocher": Ctrl.Value = -1
                        Case "decocher": Ctrl.Value = 0
                        Case "activer": Ctrl.Enabled = True
                        Case "desactiver": Ctrl.Enabled = False
                    End Select
                Else
                    Select Case TypeOperation
                        Case "activer": Ctrl.Enabled = True
                        Case "desactiver": Ctrl.Enabled = False
                    End Select
                End If
            End If
        Next Ctrl
    End Function
    voilà !

    pour ceux qui en auraient besoin un jour !

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

Discussions similaires

  1. Recherche plugin pour les réductions de code Java
    Par voyager75 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 24/07/2011, 07h52
  2. Compression & Réduction du code
    Par Arnaud F. dans le forum jQuery
    Réponses: 2
    Dernier message: 28/08/2010, 13h01
  3. réduction de code
    Par levaron dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2009, 09h16
  4. Réduction de code
    Par NeMo_O dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 21/08/2008, 14h38
  5. réduction de code
    Par lefelinherbivore dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 24/04/2008, 21h49

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