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 :

Simplification d'écriture du code [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut Simplification d'écriture du code
    Bonjour à tous,

    La question est hyper simple :
    J'ai 2 ComboBox dans un formulaire, qui sont remplies de la même manière. Au lieu de copier 2 fois le code comme actuellement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Me.ComboBox_1
        .AddItem "Months"
        .AddItem "Years"
    End With
     
    With Me.ComboBox_2
        .AddItem "Months"
        .AddItem "Years"
    End With
    ...je préfèrerai faire des économies de lignes. J'ai essayé de séparer le nom de mes 2 ComboBox par une virgule mais ça ne marche pas

    Merci par avance pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Excellent réflexe. Non seulement cela économise des lignes mais surtout cela facilite la maintenance.
    Voici un exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim i
     For i = 1 To 2
      With Me.Controls("Combobox_" & i)
      .AddItem "Months"
      .AddItem "Years"
      End With
     Next i
    [EDIT]
    Une autre option si l'ajout ne doit pas se faire en même temps, serait de créer une procédure par exemple nommée AddItem qui serait invoquée par d'autres procédures en passant comme argument le nom du contrôle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AddItem(CtrlName As String)
     With Me.Controls(CtrlName)
     .AddItem "Months"
     .AddItem "Years"
     End With
    End Sub
    Private Sub CommandButton1_Click()
      AddItem "ComboBox_1"
    End Sub
    Private Sub CommandButton2_Click()
      AddItem "ComboBox_2"
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    Bonjour,

    Merci pour cette réponse qui conviendrait mais je me suis fait avoir à mon propre jeu de simplification pour expliquer mon problème...

    En fait mes ComboBox s'appellent ComboBox_Date et ComboBox_Calendrier... les itérations avec For ne marchent donc plus..

    [EDIT]
    La deuxième solution pourrait convenir à mon problème mais pour des "novices" qui devraient reprendre un jour mon code, je préfèrerai faire au plus simple car si les Procédures ne sont pas rapprochées dans le code, il y a risque de s'y perdre facilement (à mon avis bien sur). Mais j'en prends bonne note pour mes futurs autres développements !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Justement plus le code est découpé plus il est lisible de plus il est important de le commenter même pour soi.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Par défaut
    Alors merci pour cette réponse.

    Mais pour le coup, si je suis factuelle : j'avais 8 lignes, vous m'en proposez 12

    Pour conclure, il n'est donc pas possible de lister les ComboBox comme par exemple :
    With Me.ComboBox_Date, ComboBox_Calendrier .... comme il est possible de le faire lorsque l'on déclare des variables ?

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par canary Voir le message
    Alors merci pour cette réponse.
    Mais pour le coup, si je suis factuelle : j'avais 8 lignes, vous m'en proposez 12
    Pour conclure, il n'est donc pas possible de lister les ComboBox comme par exemple :
    With Me.ComboBox_Date, ComboBox_Calendrier .... comme il est possible de le faire lorsque l'on déclare des variables ?
    C'est 12 lignes mais dans des procédures différentes. Je parlais de trop de lignes dans la même procédure.
    L'instruction With permet d'appliquer une série d'instructions à l'objet indiqué mais pas à plusieurs.
    Mais par contre, il y a toujours moyen faire une boucle avec un Array
    [EDIT]
    Désolé cliquer trop vite sur enregistrer
    Exemple avec Array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim CtrlName
     For Each CtrlName In Array("ComboBox_1", "ComboBox_2")
      With Me.Controls(CtrlName)
      .AddItem "Months"
      .AddItem "Years"
      End With
     Next
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/03/2008, 18h32
  2. masquer fenetre VBE pendant l'écriture de code
    Par oxedet dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/01/2008, 14h51
  3. Problème d'écriture de code
    Par melonmaudic dans le forum Flash
    Réponses: 7
    Dernier message: 07/06/2007, 14h17
  4. Héritage et simplification d'écriture
    Par franco01 dans le forum C++
    Réponses: 7
    Dernier message: 17/02/2006, 10h48
  5. Comparatif entre 2 méthodes d'écriture de code PHP
    Par Chengj dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2005, 21h43

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