XL 2016 méthode générique remplissage combobox, listbox...

fred19732

XLDnaute Nouveau
Bonjour ,

voila mon problème. Il doit être assez simple à résoudre mais je n'y arrive pas.

Je cherche le moyen de pouvoir créer des méthodes génériques pour remplir combobox, listbox... avec le nom de mon control( combobox, listbox...) placé en paramètre..

je m'explique.
Imaginons que j'ai un userform (uf1), sur lequel j'ai 2 combobox (Cb1 et Cb2) et deux boutons (But1 et But2)

je voudrais appeler ma méthode RemplirCbs(Combo as....) (je ne sais pas quel type de variable mettre)en utilisant le code :
call RemplirCbs(Cb1) ou call RemplirCbs(Cb2) ou Cb1 et Cb2 sont les deux combobox à remplir avec la plage ("A1:A10") pour Cb1 et "B1:B10") pour Cb2.
ces deux appel sont fait en cliquant sur But1 pour remplir Cb1 et But2 pour Cb2

j'ai mis mon fichier,Evidemment, c'est juste un fichier pour tester le truc, car j'envisage un développement plus conséquent par la suite, et j'avoue que l'appel à des méthodes génériques peut considérablement diminuer la taille et l’accès à mon fichier et son exécution.

Voila j'espère que vouspourrez m'aider. je pense que c'est juste une histoire de définition des variables qui pèche
 

Pièces jointes

  • TestGenerique.xlsm
    17.7 KB · Affichages: 8
Solution
bonsoir,
VB:
Option Explicit

Private Sub But1_Click()
 
    Call RemplirCbs(Cb1, "A")
End Sub
Private Sub But2_Click()
    
    Call RemplirCbs(Cb2, "B")
End Sub

Sub RemplirCbs(Combo As Object, Colonne As String)
   Combo.Clear
    
    With Worksheets("feuil1")
      Combo.List = .Range(.Cells(1, Colonne), .Cells(.Cells.Rows.Count, Colonne).End(xlUp)).Value
    End With
    
End Sub

patricktoulon

XLDnaute Barbatruc
bonjour

a utiliser une sub commune argumente la ca te compliquera moins la vie
VB:
Private Sub But1_Click()
    Uf1.Cb1.Clear
     RemplirCbs(Cb1, Feuil1.[A1:A12])
End Sub
Private Sub But2_Click()
     RemplirCbs Cb2, Feuil1.[B1:B12]
End Sub

Sub RemplirCbs(Combo, rng)
    Combo.Clear
    Combo.List = rng.Value
End Sub

cela dit une sub commune juste pour ca c'est un peu to mutch
j’espère que c'est a titre expérimental et que c'est a titre d’école
ca vaut pas le coup sinon ;)
 

patricktoulon

XLDnaute Barbatruc
rng ne fonctionne pas c'est un argument range

j'explique
tu fait une sub générique appelée de divers endroits ou par divers controls

exemple
la sub qui appelle la sub générique
Code:
sub test()
subgenrique "toto", feuil1.[A1:A12]
end sub


maintenant la sub generique

VB:
sub subgenrique (qui as string,quoi as range)

msgbox """qui"" est = à " & qui

msgbox """quoi est la plage " & quoi.address

end sub

dans la sub generique qui c'est toto et quoi c'est feuil1.[A1:A12]
 

dysorthographie

XLDnaute Accro
bonsoir,
VB:
Option Explicit

Private Sub But1_Click()
 
    Call RemplirCbs(Cb1, "A")
End Sub
Private Sub But2_Click()
    
    Call RemplirCbs(Cb2, "B")
End Sub

Sub RemplirCbs(Combo As Object, Colonne As String)
   Combo.Clear
    
    With Worksheets("feuil1")
      Combo.List = .Range(.Cells(1, Colonne), .Cells(.Cells.Rows.Count, Colonne).End(xlUp)).Value
    End With
    
End Sub
 

patricktoulon

XLDnaute Barbatruc
1580232417996.png
c'est cybermumulator :p :p :p :p
 

Discussions similaires

Réponses
18
Affichages
622

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma