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 :

[vba Excell] Alleger Les Codes Combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut [vba Excell] Alleger Les Codes Combobox
    BONJOUR,
    je suis sur excel et j'utilise plusieurs combobox nommées cbox( 35 pour les chiffrées) liées entre elles par le code suivant


    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
    cbox1.Text = cbox1.List(cbox1.ListIndex)
    cbox2.Text = cbox2.List(cbox1.ListIndex)
    cbox3.Text = cbox3.List(cbox1.ListIndex)
    cbox4.Text = cbox4.List(cbox1.ListIndex)
    cbox5.Text = cbox5.List(cbox1.ListIndex)
    cbox6.Text = cbox6.List(cbox1.ListIndex)
    cbox7.Text = cbox7.List(cbox1.ListIndex)
    cbox8.Text = cbox8.List(cbox1.ListIndex)
    cbox9.Text = cbox9.List(cbox1.ListIndex)
    cbox10.Text = cbox10.List(cbox1.ListIndex)
    cbox11.Text = cbox11.List(cbox1.ListIndex)
    cbox12.Text = cbox12.List(cbox1.ListIndex)
    cbox13.Text = cbox13.List(cbox1.ListIndex)
    cbox14.Text = cbox14.List(cbox1.ListIndex)
    cbox15.Text = cbox15.List(cbox1.ListIndex)
    cbox16.Text = cbox16.List(cbox1.ListIndex)
    cbox17.Text = cbox17.List(cbox1.ListIndex)
    cbox18.Text = cbox18.List(cbox1.ListIndex)
    cbox19.Text = cbox19.List(cbox1.ListIndex)
    cbox20.Text = cbox20.List(cbox1.ListIndex)
    etc......
    et ceci pour les 35 private sub cbox35_click()



    je souhaiterai faire une sorte de boucle avec un variable j
    de telle sorte que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim namebox as string
    For j= 1 to 35
    
    Private Sub namebox_click()
    cbox1.Text = cbox1.List(namebox.ListIndex)
    cbox2.Text = cbox2.List(namebox.ListIndex)
    cbox3.Text = cbox3.List(namebox.ListIndex)
    cbox4.Text = cbox4.List(namebox.ListIndex)
    cbox5.Text = cbox5.List(namebox.ListIndex)
    cbox6.Text = cbox6.List(namebox.ListIndex)
    cbox7.Text = cbox7.List(namebox.ListIndex)
    cbox8.Text = cbox8.List(namebox.ListIndex)
    cbox9.Text = cbox9.List(namebox.ListIndex)
    cbox10.Text = cbox10.List(namebox.ListIndex)
    de telle maniere à eviter 35 lignes pour les 35 cbox soit au moins 1225 lignes de saisies

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    salut,

    oui par une boucle for

    du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    'cbox1.Text = cbox1.List(cbox1.ListIndex)
     
    for i=1 to 35
     
    namelist="cbox" & i
    debug.print namelist
     
    namelist.Text=namelist.List(namelist.Listindex)
     
    next i
    un truc du genre , mais j'ai pas essayé

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Déjà, l'appel à une procédure commune dans tes différents événements te permettrait de réduire drastiquement le nombre de lignes de code.

    De plus, où en es-tu de ta gestion de ComboBox par des variables?

  4. #4
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    BONJOUR AlainTech
    où en es-tu de ta gestion de ComboBox par des variables?
    JE PENSE METTRE SORTI D AFFAIRE GRACE AU FORUM ET SES MODERATEURS

    Je joins le dit fichier pour verif.....
    maintenant je cherche alleger mes codes .....

  5. #5
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    merci pour ton code megapacman mais en l'appliquant j'ai un message d'erreur qualificateur

  6. #6
    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
    Oui, megapacman a simplement oublié qu'on ne peut pas utiliser ainsi la variable namelist de son code... mais tu devrais être au courant et avoir corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserfomN.Controls(namelist)=UserfomN.Controls(namelist).List(UserfomN.Controls(namelist).Listindex))
    "peut peut-être fonctionner
    Tu vérifies pour nous ?
    A+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    megapacman dit :


    un truc du genre , mais j'ai pas essayé
    oui c'est vrai j'ai pas testé mais maintenant moi aussi je le saurai

  8. #8
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      de ouskel'n'or 
     UserfomN.Controls(namelist)=UserfomN.Controls(namelist).List(UserfomN.Controls(namelist).Listindex))

    Encore un code qui me depasse

  9. #9
    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
    Au lieu de nous faire profite de tes dernières agapes, dis-nous plutôt ce que tu ne comprends pas
    A+

  10. #10
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    comment appliquer le code et ou le placé ??

    sachant que mon userform = grille
    mes combobox = cbox
    dois je faire une boucle ?

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    je comprends pas il est censé faire quoi ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cbox1.Text = cbox1.List(cbox1.ListIndex)

  12. #12
    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 AlainTech
    Déjà, l'appel à une procédure commune dans tes différents événements te permettrait de réduire drastiquement le nombre de lignes de code.
    megapacman, de son côté, t'a donné un exemple de procédure commune qui allègera ton code en t'évitant de répéter x fois les mêmes lignes.
    De mon côté à moi, j'ai juste corrigé l'utilisation que faisait megapacman de la variable utilisée comme nom de listbox.
    Tu relis tout bien...
    A+

  13. #13
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    de BBIL
    je comprends pas il est censé faire quoi ce code :

    Code :

    cbox1.Text = cbox1.List(cbox1.ListIndex)
    avec ce code j initialise toute mes combobox en un click
    ex si je click sur cbox1 ( ma combobox1 ) pour selectionner la 5 eme ligne par exemple la valeur des autres combobox me montrerant egalement leurs cinquieme ligne

  14. #14
    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
    Ouf !
    Alors ce n'est pas ce que tu dois écrire... Essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.ListIndex = ListBox2.ListIndex
    Tu adaptes les noms
    A+

  15. #15
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    j'ai essaye le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cbox1.ListIndex = cbox2.ListIndex = cbox3.ListIndex = cbox4.ListIndex
    mais lorsque je lance l'userform je n'ai aucune correpondance entre les combobox

  16. #16
    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
    Quand tu écris ça,
    cbox1.ListIndex = cbox2.ListIndex = cbox3.ListIndex
    tu dis si "cbox2.ListIndex = cbox3.ListIndex" alors cbox1.ListIndex = -1 sinon 0
    si tu ajoutes d'autres cbox, chais pas ce kispasse...
    Fais une procédure paramétrée "Sub laprocédure(Lindex)" que tu appelles depuis chaque click de tes listbox en indiquant le "listindex" de listbox appelante
    Là, il y a deux solutions : Ou toutes tes listbox sont concernées ou seulement certaines. Je te donne la solution si seules certaines de tes listbox sont concernées, celles dont le nom commencent par cbox. Tu peux en avoir d'autres non concernées. Dans le cas contraire, on verra + tard
    Dans ta sub, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub laprocédure(Lindex)
    For each LeControl in Userform1.controls
          if instr(LeControl.name,cbox) = 1 then
                Userform1.controls(LeControl.name).listindex = Lindex
          endif
    Next
    Pour appeler cette procédure, une ligne dans le clic de tes listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laprocédure cboxn.listindex
    où n est le N° de la listbox
    Si toutes les listbox sont concernées, il y a une autre manière de procéder mais il me manque des infos. Silky avait indiqué le moyen d'utiliser le type du control mais j'ai oublié la syntaxe.
    Tu testes déjà ça et tu nous dis
    A+

  17. #17
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    merci je teste ça et vous tiens au courant

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    manque (au moins) des " dans code à ousk...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ...   if instr(LeControl.name,"cbox") = 1 then....

  19. #19
    Membre du Club Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Points : 67
    Points
    67
    Par défaut
    Merci Je Rectifie





    GRACE A LA " procedure " CA MARCHE NICKEL CHROME

    J'ai juste definiet ça tourne!!!!!


    un grand merci à vous tous et surtout ouskel'nor bbil alaintech....

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

Discussions similaires

  1. [VBA][Excel] Avec les modèles Excel.
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2006, 10h27
  2. [VBA Excel] Récuperer le code source d'une page html dans un string
    Par viniboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2006, 19h11
  3. [VBA Excel] Ordonner les tabulations dans un formulaire
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2006, 13h41
  4. [VBA Excel] Forcer les majuscules
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/06/2006, 12h12
  5. [VBA][Excel]Récupérer les valeurs du graphe...
    Par Samourai dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 10h51

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