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 du code en Vba [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Simplifier du code en Vba
    Bonjour à tous,

    J'ai tapé ce code qui selon le choix opéré dans une TextBox affiche 3 ou 12 autres TextBox.
    Comme vous pouvez le constater, c'est lourd et long.
    Pouvez-vous m'aider à le raccourcir s'il vous plait ?
    J'ai déjà essayé mais j'ai tout planté.

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    Private Sub T4_Change()
    'Si je tape 1 - seuls les labels et TextBoxs 6 à 8 sont visibles
    If T4.Value = 1 Then
    Lab9.Visible = False
    Lab10.Visible = False
    Lab11.Visible = False
    Lab12.Visible = False
    Lab13.Visible = False
    Lab14.Visible = False
    Lab15.Visible = False
    Lab16.Visible = False
    Lab17.Visible = False
    T9.Visible = False
    T10.Visible = False
    T11.Visible = False
    T12.Visible = False
    T13.Visible = False
    T14.Visible = False
    T15.Visible = False
    T16.Visible = False
    T17.Visible = False
    End If
    'Si je tape 2 - seuls les labels et TextBoxs 6 à 11 sont visibles
    If T4.Value = 2 Then
    Lab9.Visible = True
    Lab10.Visible = True
    Lab11.Visible = True
    Lab12.Visible = False
    Lab13.Visible = False
    Lab14.Visible = False
    Lab15.Visible = False
    Lab16.Visible = False
    Lab17.Visible = False
    T9.Visible = True
    T10.Visible = True
    T11.Visible = True
    T12.Visible = False
    T13.Visible = False
    T14.Visible = False
    T15.Visible = False
    T16.Visible = False
    T17.Visible = False
    End If
    If T4.Value = 3 Then
    'Si je tape 3 - seuls les labels et TextBoxs 6 à 14 sont visibles
    Lab9.Visible = True
    Lab10.Visible = True
    Lab11.Visible = True
    Lab12.Visible = True
    Lab13.Visible = True
    Lab14.Visible = True
    Lab15.Visible = False
    Lab16.Visible = False
    Lab17.Visible = False
    T9.Visible = True
    T10.Visible = True
    T11.Visible = True
    T12.Visible = True
    T13.Visible = True
    T14.Visible = True
    T15.Visible = False
    T16.Visible = False
    T17.Visible = False
    End If
    If T4.Value = 4 Then
    'Si je tape 4 - Tous les labels et TextBoxs sont visibles
    Lab9.Visible = True
    Lab10.Visible = True
    Lab11.Visible = True
    Lab12.Visible = True
    Lab13.Visible = True
    Lab14.Visible = True
    Lab15.Visible = True
    Lab16.Visible = True
    Lab17.Visible = True
    T9.Visible = True
    T10.Visible = True
    T11.Visible = True
    T12.Visible = True
    T13.Visible = True
    T14.Visible = True
    T15.Visible = True
    T16.Visible = True
    T17.Visible = True
    End If
    If T4.Value = "" Then
    'Si rien n'est tapé 1 - seuls les labels et TextBoxs 6 à 8 sont visibles
    Lab9.Visible = False
    Lab10.Visible = False
    Lab11.Visible = False
    Lab12.Visible = False
    Lab13.Visible = False
    Lab14.Visible = False
    Lab15.Visible = False
    Lab16.Visible = False
    Lab17.Visible = False
    T9.Visible = False
    T10.Visible = False
    T11.Visible = False
    T12.Visible = False
    T13.Visible = False
    T14.Visible = False
    T15.Visible = False
    T16.Visible = False
    T17.Visible = False
    End If
    End Sub

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour nec le forum essai comme cela le principe!! a adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Dim i As Byte
    Private Sub T4_Change()
    If T4.Value = 1 Then: For i = 9 To 17: Controls("T" & (i)).Visible = False: Next i
    If T4.Value = 1 Then: For i = 9 To 17: Controls("label" & (i)).Visible = False: Next i
    'If T4.Value = 2 Then
    'ect..
    End Sub

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bounjour à tou(te)s
    Dans le même genre que Laetitia (que je salue)..
    Mettre les numéros dans les propriétés Tag des labels et des textes.
    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
    Sub Montre(Mode As Integer)
    Dim Cl As Control
    Dim lbDe As Integer, lbA As Integer
    Dim Tg As Integer
        'CacheTout
        For Each Cl In Me.Controls
            If Cl.Name <> "T4" Then
                Cl.Visible = False
            End If
        Next Cl
        Select Case Mode
        'Si je tape 1 - seuls les labels et TextBoxs 6 à 8 sont visibles
        Case 1: lbDe = 6: lbA = 8
        'Si je tape 2 - seuls les labels et TextBoxs 6 à 11 sont visibles
        Case 2: lbDe = 6: lbA = 11
        'Si je tape 3 - seuls les labels et TextBoxs 6 à 14 sont visibles
        Case 3: lbDe = 6: lbA = 14
        'Si je tape 4 - Tous les labels et TextBoxs sont visibles
        Case 4: lbDe = 1: lbA = 14
        Case Else:
            Montre 1
            Exit Sub
        End Select
        For Each Cl In Me.Controls
            Tg = Val(Cl.Tag)
            If (Tg >= lbDe And Tg <= lbA) Then
                Cl.Visible = True
            End If
        Next Cl
    End Sub
    Pas tout tester, je n'ai pas ton formulaire.
    A+

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour LeForestier, re Laetitia,

    LeForestier, je ne connais pas la propriété Tag, peux-tu m'expliquer comment ça fonctionne et quel numéro dois-je mettre dedans ?
    Merci par avance

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par L'aide en ligne à Tag => F1
    Stocke des informations supplémentaires sur un objet.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Ce sont bien des contrôles sur un UserForm ?
    Si oui, clic droit sur un des labels ou textBox et sélectionne Propriété.
    C'est dans les propriétés que tu trouve Tag.
    Et tu y met les numéros de 1 à .. 14 (si c'est le dernier) dans les texte et les labels.
    Si c'est sur une feuille faudra un peu modifier le code

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    ok j'ai compris

    Laetitia j'ai testé ton code mais un message d'erreur apparaît sur Next i (Objet Spécifié introuvable).

    LeForestier j'ai également testé ton code mais ça ne marche pas. Je ne l'ai peut-être pas mis au bon endroit (dans User)

    Merci

    Le code de Laetitia fonctionne très bien. J'avais commis une erreur, au lieu de "Label" il fallait mettre "Lab" puisque j'avais renommé mes Labels.
    Merci à tous pour votre patience et désolé pour ce contre-temps.

  8. #8
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour le fil le forum l' ami forestier tout d'abord merci pour pour ton code j ai jamais utilise la proprieté tag j 'avais l'impression quelle servait a rien!! ton code est trés subtil combine avec select case cela apporte beaucoup de simplification si tu en as beaucoup comme cela je suis preneuse passe une bonne soirée gros bisous leti

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

Discussions similaires

  1. [XL-2013] Simplifier un code macro en VBA pour faire un tri d'une liste personnalisée
    Par phanoulevoyou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/11/2013, 13h23
  2. [XL-2007] Comment simplifier mon code VBA SVP?
    Par anthooooony dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2012, 11h59
  3. Simplifier un code vba excel
    Par cedill23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2011, 16h06
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 18h05
  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, 17h15

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