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 :

Simplifier un code [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ex technicien Prévention Incendie
    Inscrit en
    Février 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ex technicien Prévention Incendie
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 156
    Par défaut Simplifier un code
    Bonjour,
    Je suis entrain de développer un fichier qui me permet de réaliser des évaluations. Nous serons plusieurs à l'utiliser.
    Actuellement je le fait tourner pour obtenir le résultat attendu, et grâce aux membres du site je suis arrivé à un résultat satisfaisant. Maintenant j'essaye de faire quelque chose de propre car j'ai du travailler à la hussarde.
    Explication :
    Dans l'UserForm "Form_Config" qui contient 3 Frames
    1) "Fram_Langue" avec 4 OptionButtons : "Button_FR", "Button_EN", "Button_DE" et "Button_IT"
    2) "Fram_Site" avec 3 OptionButtons : "Button_Indus", "Button_Log" et "Button_CPS"
    3) "Fram_Rens" avec 4 TextBox : "Box_Site", "Box_Ident", "Box_Eval" et "Box_Date"
    Un CommandButton "ButtonValConf"
    L'UserForm s'affiche dans la feuille "Config"
    dans laquelle la cellule Z1 affiche "I", "L" ou "C" selon le choix de l'OptionButton dans le frame "Fram_Site"
    La cellule Z2 affiche "FR", "EN", "DE" ou "IT"
    Ce que j'essaye de faire ;
    sur la seconde utilisation du fichier (après sauvegarde) les valeurs présentes en colonne Z font apparaitre le point noir dans l'OptionButton sélectionné lors de l'utilisation initiale. Et le texte saisie s'affiche dans les textBox correspondantes
    Puis je demmande d'afficher l'UserForm duement renseigné
    Peut on simplifier le code suivant.
    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
    Sub Auto_Open()
    '
    ' Auto_Open Macro
    ' Macro enregistrée le 06/03/2011 par ThSPB
    '
    'Affiche le point dans l'OptionButton pour la langue utilisée
        If ActiveSheet.Cells(2, 26) = "FR" Then
            Form_Config.Button_FR.Value = True
        End If
     
        If ActiveSheet.Cells(2, 26) = "EN" Then
            Form_Config.Button_EN.Value = True
        End If
     
        If ActiveSheet.Cells(2, 26) = "DE" Then
            Form_Config.Button_DE.Value = True
        End If
     
        If ActiveSheet.Cells(2, 26) = "IT" Then
            Form_Config.Button_IT.Value = True
        End If
     
    'Affiche le point dans l'OptionButton pour le type de site
        If ActiveSheet.Cells(1, 26) = "I" Then
            Form_Config.Button_Indus.Value = True
        End If
     
        If ActiveSheet.Cells(1, 26) = "L" Then
        Form_Config.Button_Log.Value = True
        End If
     
        If ActiveSheet.Cells(1, 26) = "C" Then
            Form_Config.Button_CPS.Value = True
        End If
    'Recopie le texte Site, Evaluateur, Ident, Date
    'si utilisation d'une ancienne matrice
     
    Form_Config.Box_Site = ActiveSheet.Cells(4, 3).Value
    Form_Config.Box_Ident = ActiveSheet.Cells(5, 3).Value
    Form_Config.Box_Eval = ActiveSheet.Cells(6, 3).Value
    Form_Config.Box_Date = ActiveSheet.Cells(7, 3).Value
     
    Form_Config.Show
     
     
     
    End Sub
    Merci de votre aide et de votre indulgence.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour la première partie et contenu de ta manière de nommer tes contrôles, un peu de gymnastique (remarque que pour les langues, c'est plus aisé)
    Code à mettre dans l'évènement Initialize de ton userform
    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
    Private Sub UserForm_Initialize()
    Dim Suf As String, Conf As String
     
    'Sites
    Conf = "Indus|Log|CPS|"
    Suf = Sheets("Config").Range("Z1").Value
    If Suf <> "" And InStr("ILC", Suf) > 0 Then
        Conf = Mid(Conf, InStr(Conf, Suf))
        Conf = Left(Conf, InStr(Conf, "|") - 1)
        Me.Controls("Button_" & Conf).Value = True
    End If
    'Langues
    Suf = Sheets("Config").Range("Z2").Value
    If Suf <> "" And InStr("FR|EN|DE|I", Suf) > 0 Then Me.Controls("Button_" & Suf).Value = True
    End Sub

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Je ne vois pas pourquoi tu veux "simplifier" ton code. Il n'est pas long, clair, simple à maintenir.

    Par contre, tu aurais pu organiser les choses autrement, même si ce n'est pas forcément mieux : lier tes contrôles à des cellules de ta feuille de paramétrage. Tu n'aurais pas à t'occuper de lire ni d'écrire dans cette feuille pas plus que dans le formulaire.

    Tu pourrais aussi l'améliorer en remplaçant ces ActiveSheet par des ThisWorkbook.Worksheets("NomFeuille").

    Mais bon, c'est juste une idée.


    Cordialement,

    PGZ

  4. #4
    Membre confirmé
    Homme Profil pro
    Ex technicien Prévention Incendie
    Inscrit en
    Février 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ex technicien Prévention Incendie
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 156
    Par défaut Merci
    Merci à tous les deux

    Je vais essayer le code de Mercatog et surtout de le comprendre, "mid" et "inStr" ne me sont pas familier

    Cordialement

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

Discussions similaires

  1. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  2. Simplifier le code
    Par Msieurduss dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h07
  3. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  5. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15

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