Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA module de Classe Change()

  • Initiateur de la discussion Initiateur de la discussion Bens7
  • Date de début Date de début

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 !

Bens7

XLDnaute Impliqué
Bonjour a tous !!
Voila j;ai un code assez repetitif on m'a dit que c'etait possible de racourcir avec un Module de Classe (en chinois c'est pareil pour moi ... llllol) si vous avez une idee ici bas le code :
Code:
'MODIF LISTE DE SOUTIEN

Private Sub TextBox7_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF CARTE DE VISITE
Private Sub TextBox8_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/8 EME
Private Sub TextBox9_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/4
Private Sub TextBox10_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/2
Private Sub TextBox11_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1
Private Sub TextBox12_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF SOLDE
Private Sub TextBox13_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF CHOIX
Private Sub TextBox14_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub
 
Re : VBA module de Classe Change()

Genre un truc comme ca mais ca marche pas :

Code:
Private Sub ("TextBox" & i)_Change()
Dim i As Byte
For i = 7 To 14
If ComboBox2 <> "" Then
SURFACEAPRIX 'Module Surface x Prix
RECALCUL        'Modul refait le Calcul
End If
Next i
Exit Sub
 
Re : VBA module de Classe Change()

Bonjour.
Vous pourriez déjà pas mal raccourcir en appelant juste une seule procédure dans chaque Private Sub TextBoxX_Change
Sinon où bloquez vous exactement pour le faire via un module de classe (après avoir commencé par faire Insersion, Module de classe puis commencé par y mettre au moins un Dim WithEvents Tbx As MSForms.TextBox) ?
 
Dernière édition:
Re : VBA module de Classe Change()


Pas je sais faire les codes simple mais tous ce que vous avez dit en haut j'ai rien compris !! (novice VBA)lollll
En gros je souhaite retrecire le code post #1 au maximum ....
 
Re : VBA module de Classe Change()

Explications:
Vous pourriez déjà pas mal raccourcir en appelant juste une seule procédure dans chaque Private Sub TextBoxX_Change
C'est vrai quoi, pourquoi écrivez vous 8 fois tout ça
Dim i As Byte
For i = 7 To 14
If ComboBox2 <> "" Then
SURFACEAPRIX 'Module Surface x Prix
RECALCUL 'Modul refait le Calcul
End If
Next i
au lieu d'écrire 8 fois seulement ça
VB:
ToutÇa
Et une seule fois
VB:
Private Sub ToutÇa()
For i = 7 To 14
    If ComboBox2 <> "" Then
       SURFACEAPRIX 'Module Surface x Prix
       RECALCUL        'Modul refait le Calcul
       End If
    Next i
End Sub
après avoir commencé par faire Insersion, Module de classe
Je veux dire après avoir fait un clic droit depuis l'explorateur de projet quelque part dans le projet VBA concerné
 
Re : VBA module de Classe Change()

re, beaucoup de mal a te suivre!!!!

suppose que
SURFACEAPRIX & RECALCUL sont des macros dans un module standard

dans la classe

Code:
 Public WithEvents tbx As MSForms.TextBox
Private Sub tbx_Change()
 If User.ComboBox2 <> "" Then SURFACEAPRIX: RECALCUL
End Sub

mon userform se nomme user adapte

donc a chaque changement dans un des textbox de 7 a 14 lance les macros

attention dans l'exemple j'ai mis d'autres textboxs de 1 a 6 cela sont pas concernes par la classe

le plus simple mettre ton fichier sans données confi... la on verra exactement ce que tu veus faire
 
Re : VBA module de Classe Change()

Je suis desole je suis assez novice ! je n'ai pas compris je te met le bout de code (tres long et pas beau) si tu peux me mettre le code exact je suprime ce bout la et je met le tiens
Code:
'****************************************** TARIFS ANNONCER ****************************************************
'MODIF LISTE DE SOUTIEN
Private Sub TextBox7_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF CARTE DE VISITE
Private Sub TextBox8_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/8 EME
Private Sub TextBox9_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/4
Private Sub TextBox10_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1/2
Private Sub TextBox11_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF 1
Private Sub TextBox12_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF SOLDE
Private Sub TextBox13_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub

'MODIF CHOIX
Private Sub TextBox14_Change()
If ComboBox2 <> "" Then
SURFACEAPRIX
RECALCUL
End If
End Sub
'************************************************ FIN TARIFS ANNONCER *****************************************************

et oui SURFACEAPRIX et RECALCUL sont 2 modules independant
Merci ! desole ....
 
Re : VBA module de Classe Change()

Et nous on n'a pas de classeur du tout !
Ah, classeur joint entre temps. Je vais l'examiner puis rectifier en Edit.
Et là tout de suite ça répond à une question qu'on se posait car on voit que RECALCUL et SURFACEPRIX sont des private Sub du Userform et non des procédures d'un module ordinaire. Elles ne seront donc pas connues du module de classe. Il est possible d'exécuter la procédure dans l'userform, mais il faut que ce soit une Public Sub pour qu'elle soit connue depuis le module de classe. Ça ne peut plus être une procédure évènement.
 
Dernière édition:
Re : VBA module de Classe Change()

Alors j'ai rien compris mais :
Peut etre ca fait vieux garcon mais svp ne pas changer le reste du code ( c'est mon premier UserForm) je m'y retrouve dedans si c'est possible a votre avis de simplifier ce truc de TextBox Change() sinon pas grave ....

Merci encore !
😛
 
Re : VBA module de Classe Change()

Voila un début.
Je n'ai pas pu tester car il y a des choses non compatibles avec ma version Excel
Voir s'il n'y aurait pas lieu d'ajouter des propriétés au module de classe TextBoxMembre puis de transmettre celles de TBM aux procédures en majuscules
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…