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 :

Optimisation de code Option button [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Par défaut Optimisation de code Option button
    bonjour
    j'ai sur un userform plusieurs frames avec plusieurs OptionButton (une dizaine par frame).
    j'enregistre dans une feuille Xls chaque optionButton dans chaque frame.
    mais vu le nombre d'optionbutton dans chaque frame, je me retrouve avec des lignes de code interminable .

    y a-t-il moyen d'optimiser toute cette partie ?

    merci

    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
    Private Sub OptionButton400_Click()
    Cells(2, 16).Value = "Tête"
    End Sub
     
    Private Sub OptionButton401_Click()
    Cells(2, 16).Value = "Yeux"
    End Sub
     
    Private Sub OptionButton402_Click()
    Cells(2, 16).Value = "Bras"
    End Sub
     
    Private Sub OptionButton403_Click()
    Cells(2, 16).Value = "Avant Bras"
    End Sub
     
    Private Sub OptionButton404_Click()
    Cells(2, 16).Value = "Ventre"
    End Sub
     
    Private Sub OptionButton405_Click()
    Cells(2, 16).Value = "Torse"
    End Sub
     
    Private Sub OptionButton406_Click()
    Cells(2, 16).Value = "Mains"
    End Sub
     
    Private Sub OptionButton407_Click()
    Cells(2, 16).Value = "Dos"
    End Sub
     
    Private Sub OptionButton408_Click()
    Cells(2, 16).Value = "Pieds"
    End Sub
     
    Private Sub OptionButton409_Click()
    Cells(2, 16).Value = "Cuisse"
    End Sub
     
    Private Sub OptionButton410_Click()
    Cells(2, 16).Value = "Jambes"
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,


    je te propose de stocker la chaine de caractère :

    - dans la propriété .Tag des tes optionbuttons
    - de l'écrire dans le .Caption de tes optionbuttons

    et de rédiger une procédure générique qui reçoit l'argument "MaPhrase" (récupérée via le .Caption ou le .Tag) et qui fera le travail (voir l'argument Destination qui sera le Range d'arrivée de la valeur)

    sans passer par un module de classe, tu n'enlèvera cependant pas l'obligation d'avoir une procédure par contrôle
    avec un module de classe, tout est simplifié, mais c'est plus technique à mettre en place

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub OptionButton401_411_Click()
        V = [{"Tête","Yeux","Bras","Avant Bras","Ventre","Torse","Mains","Dos","Pieds","Cuisse","Jambes"}]
        Cells(2, 16).Value = V(Replace(Application.Caller, "OptionButton", "") - 399)
    End Sub
    Sinon effectivement avec le Tag c'est plus simple …

    _________________________________________________________________________________________________________


        Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Par défaut
    Merci à vous deux

  5. #5
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Par défaut
    bon voilà ma solution
    ca marche et c'est le principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Copie du siege de la blessure dans la cellule 16 de la ligne 2
    Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Ctrl As Control
     
        For Each Ctrl In Frame1.Controls
            If Ctrl.Object.Value = True Then
                Cells(2, 16) = Ctrl.Object.Caption
                Exit For
            End If
        Next Ctrl
     
    End Sub

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

Discussions similaires

  1. [E-00] cocher un option button par code et non pas manuellement
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/11/2008, 13h57
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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