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


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Par défaut Optimisation de code
    Bonjour à tous,

    Voilà, le contexte est
    une userform avec 4 listbox choix multiples pour 4 familles de choix avec chacunes 3 lignes.
    Je souhaite récupérer les valeurs choisies dans une variable qui sera écrite dans une case.

    Pour le moment, j'ai ça comme code qui tourne pour récupérer les données...
    C'est loin d'être beau mais ça semble fonctionner...

    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
    'Boucle 1
    Jlbx1 = 0
      For Ilbx1 = 0 To 2
        If ListBox1.Selected(Ilbx1) Then
          Jlbx1 = Jlbx1 + 1
          txtlbx1 = txtlbx1 & "/" & ListBox1.List(Ilbx1)
        End If
      Next
    Jlbx2 = 0
      For Ilbx2 = 0 To 2
        If ListBox2.Selected(Ilbx2) Then
          Jlbx2 = Jlbx2 + 1
          txtlbx2 = txtlbx2 & "/" & ListBox2.List(Ilbx2)
        End If
      Next
    Jlbx3 = 0
      For Ilbx3 = 0 To 2
        If ListBox3.Selected(Ilbx3) Then
          Jlbx3 = Jlbx3 + 1
          txtlbx3 = txtlbx3 & "/" & ListBox3.List(Ilbx3)
        End If
      Next
    Jlbx4 = 0
      For Ilbx4 = 0 To 2
        If ListBox4.Selected(Ilbx4) Then
          Jlbx4 = Jlbx4 + 1
          txtlbx4 = txtlbx4 & "/" & ListBox4.List(Ilbx4)
        End If
      Next
    ActiveCell.Value = txtlbx1 & txtlbx2 & txtlbx3 & txtlbx4
    Vous pourriez m'aider à l'optimiser?

    Et cerise sur le gateau, comment je peux supprimer le premier caractère qui est systématiquement un "/"...
    Merci

  2. #2
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Un truc tout simple, tu répètes plein de fois la même boucle. Pourquoi ne pas tout mettre dans une seule et même boucle? :

    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
    'Boucle 1
    Jlbx1 = 0
    Jlbx2 = 0
    Jlbx3 = 0
    Jlbx4 = 0
      For Ilbx1 = 0 To 2
        If ListBox1.Selected(Ilbx1) Then
          Jlbx1 = Jlbx1 + 1
          txtlbx1 = txtlbx1 & "/" & ListBox1.List(Ilbx1)
        End If
        If ListBox2.Selected(Ilbx2) Then
          Jlbx2 = Jlbx2 + 1
          txtlbx2 = txtlbx2 & "/" & ListBox2.List(Ilbx2)
        End If
        If ListBox3.Selected(Ilbx3) Then
          Jlbx3 = Jlbx3 + 1
          txtlbx3 = txtlbx3 & "/" & ListBox3.List(Ilbx3)
        End If
        If ListBox4.Selected(Ilbx4) Then
          Jlbx4 = Jlbx4 + 1
          txtlbx4 = txtlbx4 & "/" & ListBox4.List(Ilbx4)
        End If
      Next
    ActiveCell.Value = txtlbx1 & txtlbx2 & txtlbx3 & txtlbx4

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Par défaut
    Merci beaucoup, pour le caractère en trop au début de la chaine de caractère, j'ai trouvé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Value = VBA.Right(txtlbx1 & txtlbx2 & txtlbx3 & txtlbx4, Len(txtlbx1 & txtlbx2 & txtlbx3 & txtlbx4) - 1)
    Par contre, sur d'autres postes que le mien, j'ai un message d'erreur lors de l'excécution de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ComboBox2_Change()
    If ComboBox2.Value <> "" Then
    tel_preparateur = WorksheetFunction.VLookup(ComboBox2.Value, Sheets("Données").Range("Préparateurs"), 2, False)
    TextBox8.Value = tel_preparateur
    Else
    End If
    End Sub
    Excel me dit "erreur de compilation : projet ou bibliothèque introuvable"... j'avoue ne pas comprendre pourquoi!

  4. #4
    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,

    essaye de préfixer le WorkSheetFunction par son parent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorkSheetFunction....

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  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