Combobox et variable [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonsoir à tous,

Voilà j'ai un problème et je bloque depuis plusieurs jours dessus.
Je suis en train de créer un programme sous excel-VBA.

J'ai une userform avec plusieurs combobox (1,2,3...).
Quand je fais un changement sur une combobox je voudrais faire appel à une procédure dans un  module.
Je le déclare en public mais je voudrais pouvoir appeler un combobox par une variable.

J'ai du mal à bien exprimer mon besoin mais en "gros" j'aimerais pouvoir avoir une formule du style :

userform1.combobox & ma variable (1,2,3...).value/additem..
mais je ne sais pas comment l'écrire.

Merci beaucoup pour ceux qui arriveront à me sortir de là .

houba

10 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

pourquoi ne passes-tu pas la combo en paramètre de ta procédure?

public sub action(byref oCbo as msforms.combobox) '<- ou du genre...
ocbo.add.....

PS : VBA a une rubrique attitrée

Vous êtes ici : Thèmes / [forum-VB-NET-VB-2005_40.aspx VB.NET et VB 2005] / [theme-DIVERS_221.aspx Divers] /

topic déplacé
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009

youps désolé pour la mauvaise rubrique

Alors déjà merci pour ta réponse, mais le problème c'est que justement j'ai du mal avec ce passage de combo en paramètre, et de faire le lien avec le module.
Si une personne pouvait expliciter un peu ce serait super
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
vérifé : c'est bien As MSForms.ComboBox

montre ton code, on verra comment adapter
++
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009

Alors re-bonjour,

Concernant le programme, pour tester j'ai créé une userform avec 2 combobox (combobox1 et 2)

Je commence par un sub de lancement :

Public Sub demarrage()

Worksheets("Feuil1").Select
ActiveSheet.AutoFilterMode = False
remplissage_combobox

End Sub

Puis j'ai encore un sub qui (si c'est possible) me servira de seul sub pour remplir toute mes combobox selon des conditions (d'où la nécessité d'avoir des variables à la place de mes combobox) :

Public Sub remplissage_combobox()

Dim Cell As Range
Dim Unique As New Collection
Dim Valeur As Range
Dim i As Integer
i = Range("A65536").End(xlUp).Row

On Error Resume Next
For Each Cell In Range("A1:A" & i)
If Not Cell.EntireRow.Hidden Then Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For Each Valeur In Unique
UserForm1.ComboBox1.AddItem Valeur
Next Valeur

UserForm1.Show

End Sub

Ceci est la 1ère condition quand je démarre mon programme, à savoir remplissage de la combobox1.

Maintenant je voudrais que dans la userform, si je change la valeur de la combobox1, cela me relance le code précédent mais avec le remplissage de ma combobox2 (avec les données de la colonne B).

Ceci afin de centraliser un programme qui me remplisse les combobox.

j'espère que c'est un peu plus explicite. J'ai essayé pas mal de tournure de code mais j'avoue qu'à force je sait  plus où j'en suis.
Je suis preneur de toute aide, même d'une âme charitable qui me donnerait un chemin directeur.

Bonsoir,

houba
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
ton userform contient 2 combo.... combobox1 et combobox2
ton userform a un évènement lors de son chargement, on parle du LOAD pour CHARGEMENT, en VBA c'est Initialize

dans cet évènement tu vas appeler la procédure MONTRUC, préfixée du nom du MODULE, avec le paramètre étant l'objet COMBOBOX concerné

donc dans le userform (UserForm1) :






Option Explicit


Private Sub 
UserForm_Initialize()

    Module1.MonTruc ComboBox1
    Module1.MonTruc ComboBox2
End Sub





<small>
[../code.aspx?ID= 39466 Coloration VB6, VBA,
VBS]
</small>








et dans un module ( Module1 ) :










Option Explicit


Public Sub 
MonTruc(
ByRef 
oCbo 
As 
msforms.ComboBox)

  oCbo.AddItem CStr(Date) '<- exemple
End Sub





<small>
[../code.aspx?ID =39466 Coloration VB6, VBA,
VBS]
</small>
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009

petit point, mes 2 premières sub sont dans un module
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
le principe est celui que j'ai indiqué...

disons comme ceci :
depuis le userform1 tu vas mettre la date dans le combo1, puis dans le combo2

donc dans le _load de userform1


module1.montruc combobox1

module1.montruc combobox2

et dans ton module1 :

sub montruc(byref oCbo as msforms.combobox)
  ocbo.additem cstr(date)
end sub

voilà le chemin directeur...
++
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009

Bonjour,

Qu'appelles tu  le "le _load de userform1". Est ce que c'est mon code : "Private Sub ComboBox1_Change()" ?

et je ne comprend pas le "module1.montruc combobox1"

Merci de ton aide
Messages postés
6
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
15 janvier 2009

ok je viens de tester et je pense avoir un bon début.

Je vais essayer cet aprés midi de l'appliquer à mon besoin.
Normalement je n'ai plus qu'à appeler la procédure.
Dés que j'ai avancé je viens rendre compte histoire que ca puisse servir à d'autres

par contre petite question, suis-je obligé de passer par  l'évènement userform1_initialize  ?

merci beaucoup
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
... non, tu appelles QUAND tu as besoin