XL 2010 Nom de déclaration variable

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bob O' Deville

XLDnaute Junior
Bonjour à tous.

Je veux activer une procédure du genre " Sub Combobox1_change()". Sauf que la combobox en question est dynamique. Elle s'appelle selon FTCBB1; FTCBB2; FTCBB3 etc.
Comment puis-je m'y prendre.
Par avance merci
 
Merci pour votre retour.
Voici le code. C'est sans doute perfectible mais ça fonctionne


Private Sub FTCB01_Change()

Dim Obj1 As Control
i = Range("FTCOMPTEUR")

For k = 1 To 1
Set Obj = Me.Controls("MultiPage1")
With Obj.Page3
Set Obj1 = .Add("forms.ComboBox.1")
Set Obj2 = .Add("forms.TextBox.1")
Set Obj3 = .Add("forms.TextBox.1")
Set Obj4 = .Add("forms.TextBox.1")
End With
'_______________________________________________________________________________________________
With Obj1
.name = "FTCBdesignation" & i ' La combo en question
End With
'_______________________________________________________________________________________________

With Obj2
.name = "FTTBPRIX" & i
End With

With Obj3
.name = "FTTBQTE" & i
End With

With Obj4
.name = "FTTBCOUT" & i
End With


For jjj = 1 To Sheets("PARAMETRE").Range("I" & Rows.Count).End(xlUp).Row
If Me.FTCB01 = Sheets("PARAMETRE").Cells(jjj, 9) Then
Sheets("MERCURIALE").Range("M1") = FTCB01
Numcolonne = Sheets("MERCURIALE").Cells(jjj, 13).Column
End If
Next jjj

Me.Controls("FTCBdesignation" & i).Clear

k = 2
Do While Sheets("MERCURIALE").Cells(k, 13) <> ""
Me.Controls("FTCBdesignation" & i).AddItem Sheets("MERCURIALE").Cells(k, 13)
k = k + 1
Loop

Next k

End Sub

En espérant que ca vous éclairera

Et donc :

Sub FTCBdesignation & 'i_change () '" i" la variabe du nom de la procédure que je ne sais pas faire.

En sub
 
Dernière édition:
Je n'ai pas du tout envie de reproduire votre fichier, trop compliqué.

Alors voyez le fichier joint, très simple, et ce code dans Module1 à adapter à votre problème :
VB:
Dim CB() As New Classe1 'mémorise la variable

Sub USF()
Dim i As Byte, o As Object
For i = 1 To 5 'à adapter
    Set o = UserForm1.Frame1.Add("Forms.ComboBox.1")
    o.Name = "FTCBB" & i
    o.Left = 8
    o.Top = 16 + (i - 1) * 30
    o.List = [H2:H6].Value
    ReDim Preserve CB(1 To i)
    Set CB(i).CB = o
Next
UserForm1.Show
End Sub
Un module de classe est utilisé avec ce code :
VB:
Public WithEvents CB As MSForms.ComboBox

Private Sub CB_Change()
MsgBox CB 'pour tester
End Sub
 

Pièces jointes

Re bonsoir.
Encore merci job 75 pour votre temps.
En fait ce que je souhaite, c'est l'étape d'après.
La procédure que vous m'avez proposer, crée des combobox dynamiques. Ce que j'ai fais. Ce que je n'arrive pas à faire, c'est comment créer une procédure qui s'appelerai FTCBB?_change() prenant en compte la combobox activé parmi toutes celles créées. (Dans l'exemple il y en a 5, mais ç pourrai être plus ou moins.)En gros peut-on intégre une variable dans le nom d'une procédure ? Si oui comment. Si non comment puis-je contourner le problème
Bien à vous
Bob
 
Bonsoir.
Il est peut être possible de se passez d'un module de classe en déclarant en tête :
VB:
Private WithEvents CBxTravail As MSForms.ComboBox
Vous pourriez installer des procédures de prise en charge d'évènements pour ce truc.
Ça impliquerait juste d'être capable de faire Set CBxTravail = ?(La ComboBox dynamiquement créée adéquate) avant qu'elle ne change.
 
Merci Drqnreb,

Concrètement ça donnerai quoi par exemple.
Je vous le demande parce que je maitrise pas du tout la syntaxe VBA. Et je sens que je vais passer des heures rien que pour comprendre qu'il aurait fallut mettre un point à un endroit plutôt qu'à un autre. Si je pouvais m'épargner ça, je vous en serais grandement reconnaissant.
 
Bonjour Dranreb,
Je suis désolé mais soyez assuré qu'il n'y a rien d'insidieux dans ma démarche.

Voici donc le fichier en question
Bonjour.
Ç'aurait été à vous de joindre un fichier en premier, pas à nous.
Je commence à douter de la pertinence de la direction prise pour le but poursuivi.
 

Pièces jointes

Dernière édition:
Bonjour.
Je n'avais pas vu que vous avez joins le fichier.
C'est bien ce que je pensais, je ferais ça avec un seul jeu de contrôles pour la saisie mais en les empilant dans une ListBox.
Attention je ne sais pas si l'UserForm apparait complet chez moi parce que j'ai eu deux références portées MANQUANT à décocher, dont une parce que je n'ai pas Outlook, et l'autre c'est AdHocReportingExcelClientLib.
Par ailleurs est-ce bien utile que ce soit dans un MultiPage ?
 
Bonjour.
Je n'avais pas vu que vous avez joins le fichier.
C'est bien ce que je pensais, je ferais ça avec un seul jeu de contrôles pour la saisie mais en les empilant dans une ListBox.
Attention je ne sais pas si l'UserForm apparait complet chez moi parce que j'ai eu deux références portées MANQUANT à décocher, dont une parce que je n'ai pas Outlook, et l'autre c'est AdHocReportingExcelClientLib.
Par ailleurs est-ce bien utile que ce soit dans un MultiPage ?
Bonsoir Dranreb, et à tous ceux qui souhaite suivre cette conversation.
Pour plus de lisibilité je vous renvoi un nouveau fichier épuré.
Le contexte.
J'ai un formulaire. Lorsque l'on appuis sur le bouton "Nouv." une ligne de 2 comboBox et 3 texteox dynamiques appatrait.
1 On sélectionne une valeur dans la combo " Couleur"
2 On sélectionne une valeur dans la combo " Ref"
3 automatique une valeur apparait dans la textbox "Prix"
---- Jusque là TVB -------
Ce que je voudrais : Lorsque je rentre une valeur manuellement dant la Textbox "Qté", le produit des valeurs des Textbox "Prix" et "Qté" apparait dans la textbox "Total"
----- Et là je sèche------
Auriez-vous, s'il vous plait la possibilité de me proposer la formule miracle.

PS 😛our remettre le formulaire à zero cliquez sur RESET


Merci par avance.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
4
Affichages
311
DidPouAxi
D
Réponses
9
Affichages
555
Réponses
28
Affichages
2 K
Retour