Réduire du code

Bonjour !

Bonne année à tous !

Bon après pas mal de développement du fichier en VBA avec excel je viens vers vous car j'ai un petit problème de taille ( et ce n'est pas un jeu de mots) ...

Voilà j'écris pleins de VBA ... j'ai créé un userform plutôt pas mal construit et quand je code ... voila j'ai trop de répétition et j'aimerais avoir un moyen de réduire mon code ...

Voici le code actuel ( dans un module qui est appelé dans mon userform)

Et par mesure de confidentialité les noms sont modifiés ...

    If Userform1.OptionButton1.Value = True Then

        Userform1.OptionButton2.Visible = False
        Userform1.Label5.Visible = False
        Userform1.TextBox1.Visible = False
        Userform1.Label6.Visible = False
        Userform1.TextBox2.Visible = False
        Userform1.Label7.Visible = False
        Userform1.TextBox3.Visible = False
        Userform1.Label8.Visible = False
        Userform1.TextBox4.Visible = False
        Userform1.Label9.Visible = False
        Userform1.Label10.Visible = False
        Userform1.TextBox5.Visible = False
        Userform1.Label11.Visible = False
        Userform1.TextBox6.Visible = False
        Userform1.Label12.Visible = False
        Userform1.TextBox7.Visible = False
        Userform1.Label13.Visible = False
 End If 
'Et je passe les 200 Lignes ... 

Sachant que ma contrainte pourrait être résolue par des frames ... Et bah non malheureusement car j'ai déjà des frames et c'est dans celle-ci que j'ai mais Label et textbox et qu'il y a que quelques trucs de cacher

J'ai essayé de réduire comme cela : :

    If Userform1.OptionButton1.Value = True Then

        With Userform1
                   With OptionButton2 and Label5 and TextBox1 and Label6 ' (etc ... ) 
                                    .Visible = False
                    End With
       End With

 End If 

Et bah non cela fonctionne pas du tout ...

Si des personnes auraient des solutions pour essayer je suis preneur

Merci d'avance pour les différentes réponses

Bonjour

Tu sélectionnes tous les controles que tu veux masquer et tu affectes une valeur à leur propriété ‘’Tag’’, par exemple la valeur 1

Il suffit alors d’avoir les instructions suivantes pour les masquer :

    For Each c In Me.Controls
        If c.Tag = 1 Then
            c.Visible = False
        End If
    Next c

Ok ?

Bye !

Merci de la réponse mais est ce que nous pouvons donner plusieurs valeur à Tag ?

Car suivant les options des cellules apparaitrons et non

???

Tu donnes à Tag la valeur que tu veux mais je ne vois pas comment tu pourrais lui en donner plusieurs

Exemple 2 : tu donnes à Tag la valeur "maValeur"

Ton code doit alors être :

For Each c In Me.Controls
        If c.Tag = "maValeur" Then
            c.Visible = False
        End If
    Next c

Si tu ne piges pas, envoie ton fichier.

Bye !

Je vais faire un fichier exemple avec les mêmes cellule etc .... et je l'enverrais dans la journée

Voici un fichier sous le même principe que mon original

Celui-ci est 7 à 8 moins gros

12classeur1.xlsm (18.20 Ko)

Un peu fouillis ta macro.

J’ai commencé par mettre la propriété ‘’Tag’’ des contrôles du frame1 à 1 , celle des controles du frame2 à 2 et celle du frame3 à 3

Puis, comme tu ne l’a pas utilisée, je me suis servi de la macro ‘’ Private Sub UserForm_initialize()’’

C’est une macro qui s’exécute juste avant d’afficher un UserForm.

Je lui ai mis les instructions pour tout cacher puis ne remettre visible que le combobox et son label

J’y ai chargé les valeurs que le combobox doit proposer : «’’Afficher Frame1’’ etc…

Ensuite, tout se joue dans la macro ‘’ Private Sub ComboBox1_Change() ‘’, que tu n’as pas utilisé non plus. (une chance pour moi !)

Je t’invite à la regarder pour voir comment on peut jouer avec les tags et les boucles pour afficher ou masquer plusieurs contrôles d’un coup.

Ensuite, à toi de jouer !

Bon courage !

Bye !

19classeur1-v1.xlsm (25.01 Ko)

Merci Beaucoup pour la réponse je vais étudier la question des Tag car je pense que dans mon développement cela va être utilisé .

Y a-t-il des tutos sur les Tag et les propriétés des objets de VBA ?

Merci beaucoup pour les réponses apportées

Bonjour

Antho49000 a écrit :

Y a-t-il des tutos sur les Tag et les propriétés des objets de VBA ?

Regarde de ce coté-là, c'est toujours sur le forum :

https://www.excel-pratique.com/fr/vba.php

Bye !

Bonjour,

le tag est simplement une propriété mise à ta disposition dans certains contrôles pour en faire ce que tu veux.

eric

Rechercher des sujets similaires à "reduire code"